# Welcome to XFT

Welcome to XFT! This site provides information for developers and users.

XFT is a digital asset manager. We issue stablecoins for global corporations in retail, hospitality, and industrials. These stablecoins power our transaction banking platform, which offers full-stack blockchain solutions to the most complex cash management problems for corporate treasurers.

Our mission is to use blockchains to build resilient internet capital markets and accelerated global supply chains.

## Platform

***

XFT has an ecosystem of over 20000+ onchain assets. Learn more about our solutions below.

* International Deposits Network: <https://docs.xft.finance/idn>
* BITNET: <https://docs.xft.finance/bitnet>
* XFT Token Service: <https://docs.xft.finance/idn/xft-token-service>
* Tech: <https://docs.xft.finance/technical-implementation>
* API Concepts:&#x20;
* Learn: <https://docs.xft.finance/learn>
* Get started: <https://xft.finance/register>
* Contact: <https://xft.finance/contact>


# Technical Implementation

## Protocol

All XFT token contracts implement the ERC-20 standard, enabling the storage and transfer of tokensbalances across individual accounts. It supports additional functionalities such as minting and burning, controlled by privileged accounts, and incorporates asset freezing mechanisms to prevent financial crimes.

Most XFT tokenized products implement the following ERC-20 token logic. See [Equities](#equity-protocol) for logic update.

```
FEATURES
- Access control
- Rebasing token mechanism
- Minting and burning functionality
- Block/Unblock accounts
- Pausing emergency stop mechanism
- Reward multiplier system
- EIP-2612 permit support
- OpenZeppelin UUPS upgrade pattern


PUBLIC AND EXTERNAL FUNCTIONS
initialize(string memory name_, string memory symbol_, address owner): Initializes the contract.
name(): Returns the name of the token.
symbol(): Returns the symbol of the token.
decimals(): Returns the number of decimals the token uses.
convertToShares(uint256 amount): Converts an amount of tokens to shares.
convertToTokens(uint256 shares): Converts an amount of shares to tokens.
totalShares(): Returns the total amount of shares.
totalSupply(): Returns the total supply.
balanceOf(address account): Returns the account balance.
sharesOf(address account): Returns the account shares.
mint(address to, uint256 amount): Creates new tokens to the specified address.
burn(address from, uint256 amount): Destroys tokens from the specified address.
transfer(address to, uint256 amount): Transfers tokens between addresses.
blockAccounts(address[] addresses): Blocks multiple accounts at once.
unblockAccounts(address[] addresses): Unblocks multiple accounts at once.
isBlocked(address account): Checks if an account is blocked.
pause(): Pauses the contract, halting token transfers.
unpause(): Unpauses the contract, allowing token transfers.
setRewardMultiplier(uint256 _rewardMultiplier): Sets the reward multiplier.
addRewardMultiplier(uint256 _rewardMultiplierIncrement): Adds the given amount to the current reward multiplier.
approve(address spender, uint256 amount): Approves an allowance for a spender.
allowance(address owner, address spender): Returns the allowance for a spender.
transferFrom(address from, address to, uint256 amount): Moves tokens from an address to another one using the allowance mechanism.
increaseAllowance(address spender, uint256 addedValue): Increases the allowance granted to spender by the caller.
decreaseAllowance(address spender, uint256 subtractedValue): Decreases the allowance granted to spender by the caller.
DOMAIN_SEPARATOR(): Returns the EIP-712 domain separator.
nonces(address owner): Returns the nonce for the specified address.
permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s): Implements EIP-2612 permit functionality.


PRIVATE AND INTERNAL FUNCTIONS
_authorizeUpgrade(address newImplementation): Internal function to authorize an upgrade.
_mint(address to, uint256 amount): Internal function to mint tokens to the specified address.
_burn(address account, uint256 amount): Internal function to burn tokens from the specified address.
_beforeTokenTransfer(address from, address to, uint256 amount): Hook that is called before any transfer of tokens.
_afterTokenTransfer(address from, address to, uint256 amount): Hook that is called after any transfer of tokens.
_transfer(address from, address to, uint256 amount): Internal function to transfer tokens between addresses.
_blockAccount(address account): Internal function to block account.
_unblockAccount(address account): Internal function to unblock an account.
_setRewardMultiplier(uint256 _rewardMultiplier): Internal function to set the reward multiplier.
_spendAllowance(address owner, address spender, uint256 amount): Internal function to spend an allowance.
_useNonce(address owner): Increments and returns the current nonce for a given address.
_approve(address owner, address spender, uint256 amount): Internal function to approve an allowance for a spender.


EVENTS
Transfer(from indexed addr, to uint256, amount uint256): Emitted when transferring tokens.
RewardMultiplier(uint256 indexed value): Emitted when the reward multiplier has changed.
Approval(address indexed owner, address indexed spender, uint256 value): Emitted when the allowance of a spender for an owner is set.
AccountBlocked(address indexed addr): Emitted when an address is blocked.
AccountUnblocked(address indexed addr): Emitted when an address is removed from the blocklist.
Paused(address account): Emitted when the pause is triggered by account.
Unpaused(address account): Emitted when the unpause is triggered by account.
Upgraded(address indexed implementation): Emitted when the implementation is upgraded.


ROLES 
DEFAULT_ADMIN_ROLE: Grants the ability to grant roles.
MINTER_ROLE: Grants the ability to mint tokens.
BURNER_ROLE: Grants the ability to burn tokens.
BLOCKLIST_ROLE: Grants the ability to manage the blocklist.
ORACLE_ROLE: Grants the ability to update the reward multiplier.
UPGRADE_ROLE: Grants the ability to upgrade the contract.
PAUSE_ROLE: Grants the ability to pause/unpause the contract.
```

```
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"sharesNeeded","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"name":"ERC2612ExpiredDeadline","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"ERC2612InvalidSignature","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"USDXBlockedSender","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"sharesNeeded","type":"uint256"}],"name":"USDXInsufficientBurnBalance","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"USDXInvalidBlockedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"USDXInvalidBurnSender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"USDXInvalidMintReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"rewardMultiplier","type":"uint256"}],"name":"USDXInvalidRewardMultiplier","type":"error"},{"inputs":[],"name":"USDXPausedTransfers","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"AccountBlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"AccountUnblocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RewardMultiplier","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"BLOCKLIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORACLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardMultiplierIncrement","type":"uint256"}],"name":"addRewardMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blockAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"owner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardMultiplier","type":"uint256"}],"name":"setRewardMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"sharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"unblockAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}]
```

## Dependencies

The contracts build their foundation on top of OpenZeppelin Contracts library, widely used and recognized battle-tested components throughout the Ethereum ecosystem:

* AccessControlUpgradeable.sol
* PausableUpgradeable.sol
* UUPSUpgradeable.sol
* CountersUpgradeable.sol
* ECDSAUpgradeable.sol
* EIP712Upgradeable.sol
* IERC20PermitUpgradeable.sol
* IERC20MetadataUpgradeable.sol

## Income & Yield Distribution

XFT uses a process called "rebasing" or changing the total supply of tokens, a reward multiplier, and share-based accounting to distribute bond income to token holders. Under the hood, USDX holders own a fixed amount of shares in a mutual fund.

`balanceOf(account) = shares[account] * rewardMultiplier`

When underlying mutual fund assets accrue yield, XFT increases the reward multiplier. This proportionally mints additional USDX tokens to each holder's wallet based on the number of shares they own.

* `shares` - map of account share of the total supply.
* `rewardMultiplier` - sum of addRewardMultiplier.

#### Rebasing Example

If a user purchased 100 USDX tokens when the reward multiplier was 1.00, that user would receive 100 shares. If the reward multiplier was updated to reflect a 3.8% return, that user would then have 103.8 USDX tokens but still have the same 100 shares.

| Time | USDX (balanceOf) | Shares | rewardMultiplier |
| ---- | ---------------- | ------ | ---------------- |
| 1    | 100              | 100    | 1                |
| 2    | 103.8            | 100    | 1.038            |

## Role-Based Access Control

The USDX contract implements a simple Role-Based Access Control (RBAC) system. This ensures that only authorized accounts can perform certain actions, enhancing security and operational integrity.

* DEFAULT\_ADMIN\_ROLE: Grants the ability to grant roles.
* MINTER\_ROLE: Grants the ability to mint tokens.
* BURNER\_ROLE: Grants the ability to burn tokens.
* BLOCKLIST\_ROLE: Grants the ability to manage the blocklist.
* ORACLE\_ROLE: Grants the ability to update the reward multiplier.
* UPGRADE\_ROLE: Grants the ability to upgrade the contract.
* PAUSE\_ROLE: Grants the ability to pause/unpause the contract.

#### Example role assignments

| Role                 | Function                 | Participants                                                                                                            |
| -------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| DEFAULT\_ADMIN\_ROLE | Grant roles              | XFT                                                                                                                     |
| MINTER\_ROLE         | Mint tokens              | <p>• Principal Underwriter<br>• Distributor<br>• Customer<br>• Robinhood<br>• Bridge<br>• Securitize</p>                |
| BURNER\_ROLE         | Burn tokens              | <p>• Principal Underwriter<br>• Distributor<br>• Customer<br>• Robinhood<br>• Bridge<br>• Securitize</p>                |
| BLOCKLIST\_ROLE      | Manage blocklist         | Fund Administrator, KYC/AML                                                                                             |
| ORACLE\_ROLE         | Update reward multiplier | Investment Advisor, portfolio management                                                                                |
| UPGRADE\_ROLE        | Upgrade contract         | XFT                                                                                                                     |
| PAUSE\_ROLE          | Pause/unpause            | <p>• NYSE, market close<br>• DTCC, market close<br>• Custodian, redemption pressure<br>• Circuit breaker mechanisms</p> |

## Bond Protocol

* **Symbol:** ISIN
* **Name:** \[issuer] \[coupon] \[maturity]

Example:

* Symbol = ISIN = US48251W5004
* Name = Ticker = KKR 6.25 03/01/28

### Real Estate Protocol

* **Symbol:** \[[UPI](https://upi.reso.org/builder/index.html)] OR \[BBL/BIN]
* **Name:** \[address]
  * LN, ST, AVE, BLVD, RD

Example:

* Symbol = UPI = 65-001-120  \
  Name = Property Address = 315 HEPBURN ST WILLIAMSPORT PA 17701&#x20;
* Symbol = BIN-BBL = 1015862-1008350041  \
  Name: EMPIRE STATE BUILDING

### Equity Protocol

All tokenized stocks implement the following modified or net new ERC-20 logic. See [ERC-8056](http://xft.sh/erc8056).

```
FEATURES
- Share multiplier mechanism
- Distribution multiplier mechanism
- Raw and effective share classes

PUBLIC AND EXTERNAL FUNCTIONS
totalShares(): Returns the total amount of shares.
totalRawShares(): Returns the total amount of effective shares.
totalEffectiveShares(): Returns the total amount of effective shares.
totalSupply(): Returns the total supply.
convertToShares(uint256 amount): Converts an amount of tokens to shares.
convertToTokens(uint256 shares): Converts an amount of shares to tokens.
setRewardMultiplier(uint256 _rewardMultiplier): Sets the reward multiplier.
addRewardMultiplier(uint256 _rewardMultiplierIncrement): Adds the given amount to the current reward multiplier.
setShareMultiplier(uint256 _shareMultiplier): Sets the share multiplier.
addShareMultiplier(uint256 _shareMultiplierIncrement): Adds the given amount to the current share multiplier.

PRIVATE AND INTERNAL FUNCTIONS
_setRewardMultiplier(uint256 _rewardMultiplier): Internal function to set the reward multiplier.
_setShareMultiplier(uint256 _ShareMultiplier): Internal function to set the share multiplier.

EVENTS
RewardMultiplier(uint256 indexed value): Emitted when the reward multiplier has changed.
ShareMultiplier(uint256 indexed value): Emitted when the share multiplier has changed.

ROLES
ORACLE_ROLE: Grants the ability to update the multipliers.
```

## Distributions & Corporate Actions

`effectiveShares = rawShares * shareMultiplier`

#### Stock split example

<table><thead><tr><th width="118"></th><th width="123.5555419921875">totalShares</th><th width="124.666748046875">totalSupply</th><th width="146.888916015625">shareMultiplier</th><th width="154.5555419921875">rewardMultiplier</th><th width="118">balanceOf</th><th data-hidden>share/token</th></tr></thead><tbody><tr><td>t0</td><td>100.0000</td><td>100.0000</td><td>1.0000</td><td>1.0000</td><td>50</td><td>1.0000</td></tr><tr><td>Distribution</td><td>100.0000</td><td>103.8000</td><td>1.0000</td><td>1.0380</td><td>51.9</td><td>0.9634</td></tr><tr><td>2-for-1 split</td><td>200.0000</td><td>103.8000</td><td>2.0000</td><td>1.0380</td><td>51.9</td><td>1.9268</td></tr></tbody></table>


# Contract Overview

All XFT tokenized products implement the following ERC-20 token logic.

#### Features

* Access Control
* Rebasing token mechanism
* Minting and burning functionality
* Block/Unblock accounts
* Pausing emergency stop mechanism
* Reward multiplier system
* EIP-2612 permit support
* OpenZeppelin UUPS upgrade pattern

**Public and External Functions**

* `initialize(string memory name_, string memory symbol_, address owner)`: Initializes the contract.
* `name()`: Returns the name of the token.
* `symbol()`: Returns the symbol of the token.
* `decimals()`: Returns the number of decimals the token uses.
* `convertToShares(uint256 amount)`: Converts an amount of tokens to shares.
* `convertToTokens(uint256 shares)`: Converts an amount of shares to tokens.
* `totalShares()`: Returns the total amount of shares.
* `totalSupply()`: Returns the total supply.
* `balanceOf(address account)`: Returns the account blanace.
* `sharesOf(address account)`: Returns the account shares.
* `mint(address to, uint256 amount)`: Creates new tokens to the specified address.
* `burn(address from, uint256 amount)`: Destroys tokens from the specified address.
* `transfer(address to, uint256 amount)`: Transfers tokens between addresses.
* `blockAccounts(address[] addresses)`: Blocks multiple accounts at once.
* `unblockAccounts(address[] addresses)`: Unblocks multiple accounts at once.
* `isBlocked(address account)`: Checks if an account is blocked.
* `pause()`: Pauses the contract, halting token transfers.
* `unpause()`: Unpauses the contract, allowing token transfers.
* `setRewardMultiplier(uint256 _rewardMultiplier)`: Sets the reward multiplier.
* `addRewardMultiplier(uint256 _rewardMultiplierIncrement)`: Adds the given amount to the current reward multiplier.
* `approve(address spender, uint256 amount)`: Approves an allowance for a spender.
* `allowance(address owner, address spender)`: Returns the allowance for a spender.
* `transferFrom(address from, address to, uint256 amount)`: Moves tokens from an address to another one using the allowance mechanism.
* `increaseAllowance(address spender, uint256 addedValue)`: Increases the allowance granted to spender by the caller.
* `decreaseAllowance(address spender, uint256 subtractedValue)`: Decreases the allowance granted to spender by the caller.
* `DOMAIN_SEPARATOR()`: Returns the EIP-712 domain separator.
* `nonces(address owner)`: Returns the nonce for the specified address.
* `permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)`: Implements EIP-2612 permit functionality.

**Private and Internal Functions**

* `_authorizeUpgrade(address newImplementation)`: Internal function to authorize an upgrade.
* `_mint(address to, uint256 amount)`: Internal function to mint tokens to the specified address.
* `_burn(address account, uint256 amount)`: Internal function to burn tokens from the specified address.
* `_beforeTokenTransfer(address from, address to, uint256 amount)`: Hook that is called before any transfer of tokens.
* `_afterTokenTransfer(address from, address to, uint256 amount)`: Hook that is called after any transfer of tokens.
* `_transfer(address from, address to, uint256 amount)`: Internal function to transfer tokens between addresses.
* `_blockAccount(address account)`: Internal function to block account.
* `_unblockAccount(address account)`: Internal function to unblock an account.
* `_setRewardMultiplier(uint256 _rewardMultiplier)`: Internal function to set the reward multiplier.
* `_spendAllowance(address owner, address spender, uint256 amount)`: Internal function to spend an allowance.
* `_useNonce(address owner)`: Increments and returns the current nonce for a given address.
* `_approve(address owner, address spender, uint256 amount)`: Internal function to approve an allowance for a spender.

**Events**

* `Transfer(from indexed addr, to uint256, amount uint256)`: Emitted when transferring tokens.
* `RewardMultiplier(uint256 indexed value)`: Emitted when the reward multiplier has changed.
* `Approval(address indexed owner, address indexed spender, uint256 value)`: Emitted when the allowance of a spender for an owner is set.
* `AccountBlocked(address indexed addr)`: Emitted when an address is blocked.
* `AccountUnblocked(address indexed addr)`: Emitted when an address is removed from the blocklist.
* `Paused(address account)`: Emitted when the pause is triggered by account.
* `Unpaused(address account)`: Emitted when the unpause is triggered by account.
* `Upgraded(address indexed implementation)`: Emitted when the implementation is upgraded.

**Roles**

* `DEFAULT_ADMIN_ROLE`: Grants the ability to grant roles.
* `MINTER_ROLE`: Grants the ability to mint tokens.
* `BURNER_ROLE`: Grants the ability to burn tokens.
* `BLOCKLIST_ROLE`: Grants the ability to manage the blocklist.
* `ORACLE_ROLE`: Grants the ability to update the reward multiplier.
* `UPGRADE_ROLE`: Grants the ability to upgrade the contract.
* `PAUSE_ROLE`: Grants the ability to pause/unpause the contract.


# FAQ

**Q: What is XFT?**\
A: XFT is a digital asset manager. We issue stablecoins for global corporations in retail, hospitality, and industrials. These stablecoins power our transaction banking platform, which offers full-stack blockchain solutions to the most complex cash management problems for corporate treasurers. Our mission is to use blockchains to build resilient internet capital markets and accelerated global supply chains.

**Q: Why stablecoins?**\
A: Instant zero-fee 24/7/365 global programmable internet payments

**Q: Why XFT stablecoins?**\
A: Backed 1:1 w/ tokenized cash, cash equivalents for in-kind redemptions. Native U.S. Treasury Marketable Securities issuance. Deep direct, indirect liquidity corridors. Federal Reserve Discount Window access.

**Q: What is the BITNET?**\
A: The BITNET is XFT's all-to-all blockchain trading system home to 20000+ tokenized securities across all asset classes.&#x20;

**Q: Why BITNET?**\
A: Programmatic multi-asset composability. Offline digital payments. Use stocks, bonds, real estate to buy groceries.

BITNET improves:

1. Operational risk mitigation through standardization and automation
2. Intraday liquidity
3. Post-trade FX matching and netting processes

BITNET reduces:

1. Funding and number of payments required
2. Inconsistent FX matching and FX netting
3. Credit consumption
4. Intraday overdraft costs and correspondent bank charges
5. Communication required to confirm positions pre-settlement

**Q: What is the International Deposits Network?**\
A: The International Deposits Network (IDN) is XFT's RTGS payment system for tokenized commercial bank deposits. It is used to put onchain tokenized products into traditional offchain bank accounts. Send cross-border real-time payments using IDN blockchain deposit accounts.&#x20;

**Q: What is XFT Token Service?**\
A: XFT Token Service generates TANs for legacy and blockchain payment rail interoperability. This means users can send stablecoins to a wallet using, for example, the associated ABA RTN. It is also used for onchain bank account creation.

**Q: What is Bitstream?**\
A: Bitstream is the central securities depository arm of The XFT Group.

<details>

<summary>What is blockchain?</summary>

Blockchain is a payment system that is:\
Secure\
Instant\
Global\
Transparent\
Immutable\
Programmable\
\
Forward-only timestamped database secured by math.\
Fedwire or ATM on your phone.\
All-to-all bond trading system.\
RTGS money or security transfer system except instead of being behind a Chase Bank or Visa, its on your phone.\
Public Google Sheet file that is readable, writable, accessible for free to anyone with an internet connection.

</details>

<details>

<summary>What is a crypto wallet?</summary>

Bank account except instead of being secured by a 4 digit pin, its secured by a 256 digit pin.\
Internet version of your physical wallet.\
Like your Venmo or debit card account.

</details>

<details>

<summary>What is a stablecoin?</summary>

A digital dollar or “token” usable anywhere the internet is as means of payment where 1 token = 1 USD.\\

\
USD on the internet. Physical, fiat paper bills in your pocket, on your phone.\
Stablecoins are used in the same way as a holder would use USD, whether to send and receive payments, acquire and trade assets, or simply to hold USD to use in the future.\\

\
Digital p2p transferable money market mutual fund where 1 token = 1 share = 1 USD.\\

\
Transferable unit of account recorded on a database called a blockchain.\
Like airline miles, hotel points, casino chips

</details>

<details>

<summary>How are XFT units permissionless?</summary>

All XFT units are operate in a very similar way as other fiat-backed stablecoins like USDC or USDP. Primary Users (those who have an account with XFT) can mint and redeem USDX (for example) at $1. Both Primary and Secondary users can freely transfer their units, deposit it into smart contracts, and interact with any protocol that is compatible with the ERC20 standard.

</details>

<details>

<summary>How do I purchase USDXT?</summary>

Customers may purchase USDXT with USD via XFT API, web app or distribution partner.

</details>

<details>

<summary>What is a central bank digital currency (CBDC)?</summary>

A CBDC is a digital form of central bank money that is widely available to the general public. It is a digital liability of a central bank.

</details>

<details>

<summary>How do yield-bearing XFT products distribute income?</summary>

Tokens rebase daily, accruing new tokens regardless of where the yield-bearing unit is held.\
The mechanism of rebasing modifies the balanceOf via a rewardMultiplier.\
For more details, refer to the documentation here.

</details>

<details>

<summary>Why blockchain?</summary>

**Blockchain is a payment system that is:**\
\
Secure\
Instant\
Zero-fee\
24/7/365\
Global\
Transparent\
Immutable\
\
**By the numbers:**\
\
Reduced yield spreads by 25 bps ([BIS](https://www.bis.org/publ/work1116.htm))\
Enhanced liquidity by 5.3% ([HKMA](https://www.hkma.gov.hk/media/eng/publication-and-research/research/research-memorandums/2023/RM04-2023.pdf))\
Cost savings of 35-65% across settlement value chain ([Digital Asset](https://www.digitalasset.com/hubfs/Canton_Connectivity%20and%20Control%20Within%20Regulatory%20Guardrails_FINAL.pdf))\
Up to $5 billion in cost savings for equity-post trading ([Digital Asset](https://www.digitalasset.com/hubfs/Canton_Connectivity%20and%20Control%20Within%20Regulatory%20Guardrails_FINAL.pdf))\
Reduce investment bank costs by $12 billion a year ([Accenture](/))

</details>

<details>

<summary>What is netting?</summary>

A way of consolidating or reconciling multiple payments between two or more parties to create a single amount due to each participant. It simplifies doing business and reduces risk.

<mark style="color:red;">Netting refers to the consolidation of multiple financial obligations or payments into a single net amount.</mark> By strategically offsetting positive and negative positions, netting reduces the total number and value of payments involved as well as their associated settlement risks.

**Example:** Party A is due to receive USD 75,000 from Party B. At the same time, Party B is due to receive USD 30,000 from Party A. Instead of Party B paying USD 75,000 to Party A and Party A paying USD 30,000 to Party B in two separate transactions (called gross settlement), the payments can be netted. That way Party A owes nothing, and Party B pays Party A USD 45,000.

</details>

<details>

<summary>Why netting?</summary>

• Reduction of credit risk\
• Reduction of settlement risk\
• Reduction of liquidity risk\
• Reduction of systemic risk

</details>

<details>

<summary>What are the types of netting?</summary>

• Payment Netting\
• Novation Netting\
• Close-Out Netting\
• Multilateral Netting

</details>

<details>

<summary>Why blockchain for netting?</summary>

* Lower costs for all parties
* Reduce manual data entry and file uploads
* Automate and speed processing of matching and netting transactions
* Increase security through encryption and tamper-evident distributed ledger technology
* Provide transparency and enhance trust with permissioned access to transaction data

</details>

## Definitions, acronyms, and abbreviations

***

**Payment-versus-payment (PvP)**

A settlement mechanism that ensures that the final transfer of a payment in one currency occurs if and only if the final transfer of a payment in another currency or currencies takes place. If more than two currencies are involved in a PvP chain, it is called PvPvP in the context of this study.

```
Burn = Withdraw = Offramp = Redeem
Mint = Deposit = Onramp = Create
```

```
Par Value = Face Value = Nominal Value
```

**Business Identifier Code (BIC)**\
Used for addressing messages, routing business transactions and identifying business parties.

**International Bank Account Number (IBAN)**\
Specifies the structure of ISO-compliant national IBAN formats, which facilitate automated cross-border payment transaction processing.

**Legal Entity Identifier (LEI)**\
Used to enable the consistent and accurate identification of legal entities which are party to a financial transaction.

**ABA routing transit number (ABA RTN)**\
The nine-digit code printed on the bottom of checks to identify the financial institution on which it was drawn.

**Merchant account**\
A merchant account is a type of bank account that allows a seller, known as the merchant, to accept payments by debit or credit cards.

AML anti-money laundering\
API application programming interface\
BIS Bank for International Settlements\
CFT combating the financing of terrorism\
CPMI Committee on Payments and Market Infrastructures\
DID decentralised identifiers\
DLT distributed ledger technology\
FX foreign exchange\
KYC know your customer\
PFMI Principles for financial market infrastructures\
PSP payment service provider\
PoC proof of concept\
RTGS real-time gross settlement

Sistema de Pagos Electrónicos Interbancarios (SPEI)\
Society for Worldwide Interbank Financial Telecommunication (SWIFT)\
International Bank Account Number (IBAN)\
Business Identifier Code (BIC)\
Bank Identifier Code (BIC)\
Market Identifier Code (MIC)\
Legal Entity Identifier (LEI)\
CHIPS Universal Identifier (UID)\
Clearing House Interbank Payments System (CHIPS)\
Routing Transfer Number (RTN)\
American Banking Association (ABA)\
Automated Clearing House (ACH)\
Single Euro Payments Area (SEPA)\
North American Clearinghouse Association (NACHA)\
Originating Depository Financial Institution (ODFI)\
Receiving Depository Financial Institution (RDFI)\
Tokenized Account Number (TAN)\
Bankers Automated Clearing System (BACS)\
Automated Customer Account Transfer Service (ACATS)\
Automated Customer Account Transfer Service (ACATS)\
Depository Trust Company (DTC)\
Proof of Authorization (PoA)\
Request for Payment (RfP)\
Real Time Payments (RTP)\
The Clearing House (TCH)\
Credit Union (CH)\
Home Equity Line of Credit (HELOC)\
Electronic Funds Transfer (EFT)\
Real-Time Gross Settlement (RTGS)\
Financial Instrument Global Identifier (FIGI)\
Automated Customer Account Transfer Service (ACATS)\
Depository Trust & Clearing Corporation (DTCC)\
National Securities Clearing Corporation (NSCC)\
Financial Industry Regulatory Authority (FINRA)\
Account Transfer on Notification (ATON)\
Standard Entry Class (SEC)\
Peer-to-peer (P2P)\
Consumer Financial Protection Bureau (CFPB)\
Plan d’Epargne en Actions (PEA)\
Delivery vs. Payment (DVP)\
Receive vs. Payment (RVP)\
National Best Bid/Offer (NBBO)\
Volume-weighted average price (VWAP)\
Exponential Moving Average (EMA)\
Magnetic ink character recognition (MICR)\
Building Identification Number (BIN)\
Borough-Block-Lot (BBL)\
National Book-Entry System (*NBES*)\
Commercial Book-Entry System (CBES)\
Central Counterparty (CCP)\
central securities depository (CSD)\
Fast Automated Securities Transfer Program (FAST)\
Securities Transfer Agents Medallion Program (STAMP)\
Hash Time Locked Contract (HTLC)\
Point Time Locked Contract (PTLC)\
Multy-Party Hash Time Locked Contract (MPHTLC)\
payment-versus-payment (PvP)\
Continuous Net Settlement (CNS)\
Continuous Linked Settlement (CLS)\
deferred net settlement (DNS)\
real-time gross settlement (RTGS)\
Designated-Time Net Settlement (DTNS)\
Large-Value Payment Systems (LVPS)\
Direct Registration System (DRS)\
Direct Holding System (DHS)\
Demand Deposit Account (DDA)\
Controlled Disbursement Account (CDA)\
Merchant Discount Rate (MDR)\
Merchant category code (MCC)\
Accounts payable (AP)\
Accounts receivable (AR)\
Point-of-sale (POS)\
Mail order/telephone order (MOTO)\
Europay, Mastercard, and Visa (EMV)\
Automated teller machine (ATM)\
Personal identification number (PIN)\
Electronic draft capture (EDC)\
Third-Party Payment Processor (TPPP)\
Payment service provider (PSP)\
Payment Card Industry Data Security Standards (PCI DSS)\
Personally Identifiable Information (PII)\
Request for Quote (RFQ)\
Request for Cross (RFC)\
Request for Cross (R-Cross)\
Committed Cross (C-Cross)\
Better Price or Volume Match (BPVM)\
Portfolio Trades (PT)\
Systematic internalisers (SI)\
Liquidity provider (LP)\
Multilateral trading facility (MTF)\
Broker crossing network (BCN)\
Double volume cap (DVC)\
Direct Market Access (DMA)\
Sponsored Access (SA)\
Smart Order Router (SOR)\
Straight Through Processing (STP)\
Small Order Execution System (SOES)\
National Association of Securities Dealers (NASD)\
National Best Bid and Offer (NBBO)\
Ethereum Best Bid and Offer (EBBO)\
Informal value transfer system (IVTS)\
Variable Prepaid Forward (VPF)\
Variable Prepaid Forward Contract (VPFC)\
Prepaid Variable Forward Contract (PVFC)

Trade at Settlement (TAS)\
Trade at Marker (TAM)\
Basis Trade Index Close (BTIC)\
Trade at Cash Open (TACO)\
Inter-Commodity Spreads (ICS)\
Good Till Cancel (GTC)\
Good Till Date (GTD)\
Fill and Kill (FAK)\
Fill or Kill (FOK)\
All or None (AON)\
ELECTRONIC TRADING SYSTEM (ETS)\
MANUAL TRADING SERVICE (MTS)\
REQUEST FOR QUOTE TRADING SYSTEM (RFQS)\
Trade order management system (TOMS)\
Order Management System (OMS)\
Execution Management System (EMS)\
Order and Execution Management System (OEMS)\
Electronic Communication Networks (ECNs)\
Crossing Networks (CNs)\
ALTERNATIVE TRADING SYSTEMS (ATS)\
SMALL ORDER EXECUTION SYSTEM (SOES)\
National Association of Securities Dealers Automated Quotations (NASDAQ)\
Chicago Mercantile Exchange (CME)\
Chicago Board of Trade (CBOT)\
New York Mercantile Exchange (NYMEX)\
New York Commodities Exchange (COMEX)\
Reuters Trade Notification Service (RTNS)\
Financial Information eXchange (FIX)\
Transaction Cost Analysis (TCA)\
Payment Card Industry Data Security Standard (PCI-DSS)\
Near-field communication (NFC)\
Payment for Anonymous Routing (PAR)\
Tax-Free Savings Account (TFSA)\
Registered Retirement Income Fund (RRIF)\
Registered Retirement Savings Plan (RRSP)\
Adjusted Cost Base (ACB)\
Optional Cash Purchase (OCP)\
Direct Share/Stock Purchase Plan (DSPP)\
Share Purchase Plan (SPP)\
Pre-Authorized Debit (PAD)\
Dividend Purchase Plan (DPP)\
Optional Cash Purchase (OCP)\
Trade-based money laundering (TBML)\
Ultimate Beneficial Ownership (UBO)\
In-person verification (IPV)\
Most Favored Nation (MFN)\
Free Writing Prospectus (FWP)

Tender option bond (TOB)\
Tender option termination event (TOTE)\
Mandatory termination event (MTE)\
Merchant of Record (MoR)\
Usage-Based Billing (UBB)\
Programmable Transaction Blocks (PTB)\
Verifiable Random Function (VRF)\
Elliptic Curve Verifiable Random Function (ECVRF)\
Bring Your Own Store (BYOS)\
Merkle Mountain Range (MMR)\
Byzantine Fault Tolerance (BFT)\
Binary Canonical Serialization (BCS)\
Directed Acyclic Graph (DAG)\
Encrypted Object Store (EOS)\
Total Value Locked (TVL)\
Contract Execution Environment (CEE)

Peak Load Contribution (PLC)\
Dynamic Line Rating (DLR)\
Single point of failure (SPOF)\
Earnings Before Interest, Taxes, Depreciation,\
Amortization, Rent (EBITDAR)\
Bring Your Own Power (BYOP)\
Bring Your Own Power and Cooling (BYOP\&C)\
Securities-Backed Line of Credit (SBLOC)\
Securities Based Lending (SBL)\
Line of Credit (LOC)

Informal value transfer system (IVTS)\
Local exchange trading system (LETS)\
Local energy trading system (LETS)

LN, ST, AVE, BLVD, RD

FRN FLOATING RATE NOTE\
FNMA FANNIE MAE\
FNMDN FANNIE DISCOUNT NOTE\
FHLMC FREDDIE MAC\
FREDN FREDDIE MAC DISCOUNT NT\
FFCB FEDERAL FARM CREDIT BANK\
FFCBDN FED FARM CRD DISCOUNT NT\
FHLB FEDERAL HOME LOAN BANK\
FHLBDN FED HOME LN DISCOUNT NT\
F FLOAT\
DN DISCOUNT NOTE\
NT NOTE\
WI WHEN ISSUED\
WIB WHEN ISSUED BOND\
RI REISSUED\
OTR ON-THE-RUN\
FHFA FEDERAL HOUSING FINANCE AGENCY\
FHFB FEDERAL HOUSING FINANCE BOARD\
GSE GOVERNMENT SPONSORED ENTERPRISE

Federal Home Loan Bank \
Federal Home Loan Banks is a banking system which consists of 11 separate regional banks which are private, cooperative, government-sponsored enterprises. The Banks support residential mortgage lending by their member-stockholders such as commercial banks, credit unions, and insurance companies.

Federal Farm Credit Bank \
Federal Farm Credit Banks Funding Corporation engages in issuing, marketing, and handling the Farm Credit Systems debt securities. It offers discount notes, designated bonds, floating rate bonds, fixed rate bonds, and retail bonds.

Fannie Mae\
Fannie Mae buys and holds mortgages, and issues and sells guaranteed mortgage-backed securities to facilitate housing ownership for low to middle-income Americans. The Company was chartered by the United States Congress, but went public in 1970.

Freddie Mac\
Freddie Mac is a stockholder-owned corporation chartered by Congress in 1970 to create a continuous flow of funds to mortgage lenders. Freddie purchases single-family and multi-family residential mortgages and mortgage-related securities, which it finances primarily by issuing mortgage pass through securities and debt instruments in the capital markets.

When-issued\
When-issued (WI) trading refers to trading of the new security after the announcement but before issuance.

LEGAL ENTITY IDENTIFIER

254900HROIFWPRGM1V77 United States Treasury\
254900C5LP6DN9OP9V83 FEDERAL FARM CREDIT BANK\
2549001DPIFGXC1TOL40 FEDERAL HOME LOAN BANK\
S6XOOCT0IEG5ABCC6L87 FREDDIE MAC\
B1V7KEBTPIMZEU4LTD58 FANNIE MAE\
G5GSEF7VJP5I7OUK5573 Barclays Bank plc\
549300QJJX6CVVUXLE15 RBC Dominion Securities, Inc.

<table data-header-hidden><thead><tr><th width="101.199951171875"></th><th></th></tr></thead><tbody><tr><td><strong>PS</strong></td><td><strong>Payment system:</strong> a set of instruments, procedures and rules for the transfer of funds between or among participants; the system includes the participants and the entity operating the arrangement.</td></tr><tr><td><strong>CSD/SSS</strong></td><td><p><strong>Central securities depository:</strong> an entity that provides securities accounts, central safekeeping services and asset services, which may include the administration of corporate actions and redemptions, and plays an important role in helping to ensure the integrity of securities issues (that securities are not accidentally or fraudulently created or destroyed or their details changed).<br></p><p><strong>Securities settlement system:</strong> an entity that enables securities to be transferred and settled by book entry according to a set of predetermined multilateral rules. Such systems allow transfers of securities either free of payment or against payment. Typically, a CSD also operates an SSS.</p></td></tr><tr><td><strong>CCP</strong></td><td><strong>Central counterparty:</strong> an entity that interposes itself between counterparties to contracts traded in one or more financial markets, becoming the buyer to every seller and the seller to every buyer and thereby ensuring the performance of open contracts.</td></tr><tr><td><strong>TR</strong></td><td><strong>Trade repository:</strong> an entity that maintains a centralised electronic record (database) of transaction data.</td></tr></tbody></table>

**Mil Rates**\
An expression of the daily rate of per-share income earned in a bond or money market fund.

**Minimum**\
This refers to the smaller dollar amount an investor may deposit into an account. There are different types of minimums, including a minimum initial investment required to open both retirement and non-retirement accounts, and a minimum subsequent investment once the account has been established.


# What is USDXT?

USDXT is a payment stablecoin that is 100% backed by short-term US treasuries and USD.

**WHY USDXT?**&#x20;

Instant settlement\
24/7/365 redemptions vs. business hours only\
Global access vs. geographic restrictions\
No counterparty risk vs. trusting multiple counterparties\
Programmable vs. manual processes\
Zero fee vs. wire transfer fees


# Blockchain


# EVM

### Testnet

<table><thead><tr><th width="168">Chain</th><th width="113">Chain ID</th><th>Address</th></tr></thead><tbody><tr><td>Ethereum Sepolia</td><td>11155111</td><td>0x16267111BbDA693cB174687fF8a09e6726dD036d</td></tr><tr><td>Arbitrum Sepolia</td><td>421614</td><td>0xC1BF9854E43b84f3abec5f5d1C72F0a6f602034b</td></tr><tr><td>XDC Apothem</td><td>51</td><td>0x1c2498F2a17c684DB61c0DEe2371c118C5ea3d5E</td></tr><tr><td>Polygon Amoy</td><td>80002</td><td></td></tr><tr><td>Avalanche Fuji</td><td>43113</td><td>0x5Da10F63a849a49c8fdAD4c2CD463C5BA7603aB8</td></tr><tr><td>Base Sepolia</td><td>84532</td><td>0x1c2498F2a17c684DB61c0DEe2371c118C5ea3d5E</td></tr></tbody></table>

See [xft.finance/dollars](https://xft.finance/dollars) for all yield-bearing and payment stablecoin deployments.&#x20;


# Contract Overview

## USDXT Contract Overview

All XFT tokenized products implement the following ERC-20 token logic.

**Features**

* Access Control
* Rebasing token mechanism
* Minting and burning functionality
* Block/Unblock accounts
* Pausing emergency stop mechanism
* Reward multiplier system
* EIP-2612 permit support
* OpenZeppelin UUPS upgrade pattern

**Public and External Functions**

* `initialize(string memory name_, string memory symbol_, address owner)`: Initializes the contract.
* `name()`: Returns the name of the token.
* `symbol()`: Returns the symbol of the token.
* `decimals()`: Returns the number of decimals the token uses.
* `convertToShares(uint256 amount)`: Converts an amount of tokens to shares.
* `convertToTokens(uint256 shares)`: Converts an amount of shares to tokens.
* `totalShares()`: Returns the total amount of shares.
* `totalSupply()`: Returns the total supply.
* `balanceOf(address account)`: Returns the account blanace.
* `sharesOf(address account)`: Returns the account shares.
* `mint(address to, uint256 amount)`: Creates new tokens to the specified address.
* `burn(address from, uint256 amount)`: Destroys tokens from the specified address.
* `transfer(address to, uint256 amount)`: Transfers tokens between addresses.
* `blockAccounts(address[] addresses)`: Blocks multiple accounts at once.
* `unblockAccounts(address[] addresses)`: Unblocks multiple accounts at once.
* `isBlocked(address account)`: Checks if an account is blocked.
* `pause()`: Pauses the contract, halting token transfers.
* `unpause()`: Unpauses the contract, allowing token transfers.
* `setRewardMultiplier(uint256 _rewardMultiplier)`: Sets the reward multiplier.
* `addRewardMultiplier(uint256 _rewardMultiplierIncrement)`: Adds the given amount to the current reward multiplier.
* `approve(address spender, uint256 amount)`: Approves an allowance for a spender.
* `allowance(address owner, address spender)`: Returns the allowance for a spender.
* `transferFrom(address from, address to, uint256 amount)`: Moves tokens from an address to another one using the allowance mechanism.
* `increaseAllowance(address spender, uint256 addedValue)`: Increases the allowance granted to spender by the caller.
* `decreaseAllowance(address spender, uint256 subtractedValue)`: Decreases the allowance granted to spender by the caller.
* `DOMAIN_SEPARATOR()`: Returns the EIP-712 domain separator.
* `nonces(address owner)`: Returns the nonce for the specified address.
* `permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)`: Implements EIP-2612 permit functionality.

**Private and Internal Functions**

* `_authorizeUpgrade(address newImplementation)`: Internal function to authorize an upgrade.
* `_mint(address to, uint256 amount)`: Internal function to mint tokens to the specified address.
* `_burn(address account, uint256 amount)`: Internal function to burn tokens from the specified address.
* `_beforeTokenTransfer(address from, address to, uint256 amount)`: Hook that is called before any transfer of tokens.
* `_afterTokenTransfer(address from, address to, uint256 amount)`: Hook that is called after any transfer of tokens.
* `_transfer(address from, address to, uint256 amount)`: Internal function to transfer tokens between addresses.
* `_blockAccount(address account)`: Internal function to block account.
* `_unblockAccount(address account)`: Internal function to unblock an account.
* `_setRewardMultiplier(uint256 _rewardMultiplier)`: Internal function to set the reward multiplier.
* `_spendAllowance(address owner, address spender, uint256 amount)`: Internal function to spend an allowance.
* `_useNonce(address owner)`: Increments and returns the current nonce for a given address.
* `_approve(address owner, address spender, uint256 amount)`: Internal function to approve an allowance for a spender.

**Events**

* `Transfer(from indexed addr, to uint256, amount uint256)`: Emitted when transferring tokens.
* `RewardMultiplier(uint256 indexed value)`: Emitted when the reward multiplier has changed.
* `Approval(address indexed owner, address indexed spender, uint256 value)`: Emitted when the allowance of a spender for an owner is set.
* `AccountBlocked(address indexed addr)`: Emitted when an address is blocked.
* `AccountUnblocked(address indexed addr)`: Emitted when an address is removed from the blocklist.
* `Paused(address account)`: Emitted when the pause is triggered by account.
* `Unpaused(address account)`: Emitted when the unpause is triggered by account.
* `Upgraded(address indexed implementation)`: Emitted when the implementation is upgraded.

**Roles**

* `DEFAULT_ADMIN_ROLE`: Grants the ability to grant roles.
* `MINTER_ROLE`: Grants the ability to mint tokens.
* `BURNER_ROLE`: Grants the ability to burn tokens.
* `BLOCKLIST_ROLE`: Grants the ability to manage the blocklist.
* `ORACLE_ROLE`: Grants the ability to update the reward multiplier.
* `UPGRADE_ROLE`: Grants the ability to upgrade the contract.
* `PAUSE_ROLE`: Grants the ability to pause/unpause the contract.

## Application Binary Interface (ABI)

```json
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"sharesNeeded","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"name":"ERC2612ExpiredDeadline","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"ERC2612InvalidSignature","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"USDXTBlockedSender","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"sharesNeeded","type":"uint256"}],"name":"USDXTInsufficientBurnBalance","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"USDXTInvalidBlockedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"USDXTInvalidBurnSender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"USDXTInvalidMintReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"rewardMultiplier","type":"uint256"}],"name":"USDXTInvalidRewardMultiplier","type":"error"},{"inputs":[],"name":"USDXTPausedTransfers","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"AccountBlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"AccountUnblocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RewardMultiplier","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"BLOCKLIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORACLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardMultiplierIncrement","type":"uint256"}],"name":"addRewardMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blockAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"owner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardMultiplier","type":"uint256"}],"name":"setRewardMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"sharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"unblockAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}]
```


# Buying & Selling

Investors can mint and redeem USDXT shares in a single onchain Ethereum transaction. Customers may purchase USDX with USD via XFT API, web app or distribution partner.

```
Burn = Withdraw = Offramp = Redeem = Sell
Mint = Deposit = Onramp = Create = Buy
```

***

## XFT DIGITAL DOLLAR (USDXT)

*<mark style="color:purple;">**INSTANT SUBSCRIPTION**</mark>*

1 Go to the XFT web app ([app.xft.finance](https://app.xft.finance/login))\
2 Connect your wallet to the Smart Contract Router\
3 On the “Fund” tab, select the appropriate stablecoin (PYUSD/USDC/FOBXX) you wish to use for minting USDXT and enter a deposit amount\
4 Enter the amount of USDXT you wish to mint\
5 Click “Add Funds” to instantly deposit stablecoin and mint USDXT into your designated whitelisted wallet at the price shown

*<mark style="color:purple;">**INSTANT REDEMPTION**</mark>*

1 Go to the XFT web app ([app.xft.finance](https://app.xft.finance/login))\
2 Connect your wallet to the Smart Contract Router\
3 On the “Redeem” tab, select the stablecoin you wish to receive (PYUSD/USDC/FOBXX)\
4 Enter the amount of USDXT you wish to redeem\
5 Click “Redeem Funds” to burn USDXT at the price shown and receive the selected stablecoin in your wallet

***Traditional Method***

Subscription and Redemption are available on US Business Days. Redemptions made before 2:00 pm ET are processed by 5:00 pm ET the same day. Redemptions made after 2:00 pm ET are processed by 11:00 am ET the next day.

*<mark style="color:purple;">**SUBSCRIPTION**</mark>*

1 Send stablecoin (PYUSD/USDC/FOBXX) to given XFT wallet\
2 Notify a XFT representative\
3 Receive minted USDXT in your designated whitelisted wallet\
\
*<mark style="color:purple;">**REDEMPTION**</mark>*

1 Send USDXT to XFT wallet or burn USDXT directly on-chain\
2 Notify a Hashnote representative\
3 Receive stablecoin or fiat

***

### FRANKLIN ONCHAIN U.S. GOVERNMENT MONEY FUND (FOBXX)

*<mark style="color:purple;">**INSTANT REDEMPTION**</mark>*

1 User holds 10 FOBXX tokens\
2 Fund holds 10 USDXT tokens in reserve\
3 User initiates atomic swap request\
4 User sends 10 FOBXX to escrow contract\
5 Fund sends 10 USDXT to escrow contract\
6 Contract executes simultaneous swap\
7 User receives 10 USDXT\
8 Fund receives 10 FOBXX tokens\
9 Fund burns 10 FOBXX tokens

*<mark style="color:purple;">**INSTANT SUBSCRIPTION**</mark>*

1 User holds 10 USDXT tokens\
2 Fund holds treasury securities backing\
3 User sends 10 USDXT to escrow contract\
4 Fund mints 10 new FOBXX tokens to escrow\
5 Contract executes simultaneous swap\
6 User receives 10 FOBXX tokens\
7 Fund receives 10 USDXT

***

### GUGGENHEIM TREASURY SERVICES DIGITAL COMMERCIAL PAPER

*<mark style="color:purple;">**INSTANT REDEMPTION**</mark>*

1 User sends DCP to XFT\
2 XFT sends DCP to Guggenheim\
3 Guggenheim sends USD or USDXT to XFT\
4 XFT mints/transfers USDXT to User\
5 Guggenheim burns DCP

<table data-header-hidden><thead><tr><th width="203"></th><th></th></tr></thead><tbody><tr><td>Minting</td><td>1 User deposits GDCP<br>2 XFT (admin) confirms<br>3 Contract sends GDCP to admin<br>4 Contract mints USDXT to user</td></tr><tr><td>Transfer</td><td>1 User deposits GDCP<br>2 Guggenheim (admin) confirms<br>3 Contract sends GDCP to admin<br>4 Contract transfers USDXT to user</td></tr></tbody></table>

**Why mint redemption?**\
Large / unpredictable redemptions. Mint path avoids liquidity crunches for fund manager.

**Why transfer redemption?**\
Small / frequent redemptions. P2P transfer path works if reserve buffer sized correctly.

***

### BUIDL & USDC

*<mark style="color:purple;">**INSTANT MINT SUBSCRIPTION**</mark>*

**Step 1: Atomic Mint Transaction**\
(1) The user interacts with the InstantManager smart contract to request a subscription.\
(2) The InstantManager contract immediately routes the investor’s USDC to the USDXT Coinbase Account of XFT.\
(3) The InstantManager contract calls the Price Oracle contract to\
(4) get the current price of USDXT.\
(5) The instantManager contract uses that price to calculate how many USDXT to mint.\
(6) The InstantManager contract then calls the mint() function in the USDXT smart contract, which\
(7) mints the correct number of USDXT tokens.\
(8) The InstantManager contract then routes these newly minted USDXT tokens to the investor.

**Step 2: Manual Processing**\
(1) Operations team converts USDC to USD\
(2) Team wires USD to Fund's custodial account\
(3) Team places buy order for BUIDL tokens\
(4) Team wires money from custodian to fill BUIDL order\
(5) BUIDL tokens are minted and sent to USDXT's smart contract for storage

*<mark style="color:purple;">**INSTANT REDEMPTION**</mark>*

(1) The investor initiates the redemption to the USDXTInstantManager smart contract.\
(2) The InstantManager contract calls the transferFrom() function of the USDXT Token contract, which causes\
(3) the USDXT to be transferred from the investor’s wallet into the InstantManager contract, which then\
(4) burns the USDXT. To figure out how much USDC is due to the investor (and therefore how many BUIDL are necessary to sell), the InstantManager contract\
(5) calls the getPriceData() function in the USDXT Price Oracle, which\
(6) returns the price. Once the InstantManager contract\
(7) determines how many BUIDL must be sold, it\
(8) initiates the redeem() function in the Circle BUIDL redemption contract, which then\
(9) returns USDC. Finally, (10), the InstantManager sends the USDC to the investor’s wallet.

Non-instant mint and redemption occurs in a similar way, but with more manual steps and non-atomically.

***

*<mark style="color:red;">**What currency or stablecoins can I use to invest in USDXT?**</mark>*

We currently support investing via USDC, PYUSD, RLUSD, or USD bank wire.

*<mark style="color:red;">**What currency or stablecoins can I redeem USDXT for?**</mark>*

We currently support redeeming to USDC, PYUSD, RLUSD, or USD bank wire.\
\
*<mark style="color:red;">**What is the expected and maximum time for users to subscribe to and redeem from your product? Have you had any interruptions in your ability to process redemptions and subscriptions?**</mark>*

Users can expect instant atomic onchain 24/7 minting and redemptions into FOBXX and USDC 24/7 via XFT’s router smart contract.


# Structure

XFT Digital Dollar, USDXT, is a fully reserved payment stablecoin, minted 1:1 with U.S. dollars and other USD-denominated assets.

<table data-header-hidden><thead><tr><th width="208">Facts</th><th>--</th></tr></thead><tbody><tr><td>Eligibility</td><td>Permissionless</td></tr><tr><td>Underlying</td><td>U.S. Treasury Bills, Federal Home Loan Bank, Federal Farm Credit Bank</td></tr><tr><td>Liquidity</td><td>24/7 via USD</td></tr><tr><td>Legal Structure</td><td>Payment stablecoin</td></tr><tr><td>Use Cases</td><td>Instant minting and redemption; Global payments</td></tr><tr><td>Regulatory Compliance</td><td>1940 Act Closed-End Interval Fund</td></tr><tr><td>Issuer Domicile</td><td>Delaware, United States</td></tr><tr><td>Minimum Mint</td><td>$0, Instant Mint, 0% Fee</td></tr><tr><td>Minimum Redemption</td><td>$0, Instant Redemption, 0% Fee</td></tr><tr><td>Management Fee</td><td>0%</td></tr><tr><td>Implementation</td><td>Dollar.sol</td></tr><tr><td>Networks</td><td>Ethereum, Arbitrum, XDC Network</td></tr></tbody></table>

### Service Providers

<table data-header-hidden><thead><tr><th width="272">Service</th><th>Provider</th></tr></thead><tbody><tr><td>Principal Underwriter</td><td></td></tr><tr><td>Investment Advisor</td><td></td></tr><tr><td>Sub-Advisor</td><td></td></tr><tr><td>Distributor</td><td></td></tr><tr><td>Transfer Agent</td><td>XFT</td></tr><tr><td>Custodian</td><td></td></tr><tr><td>Administrator</td><td></td></tr><tr><td>Sub-Administrator</td><td></td></tr><tr><td>Independent Public Accountant</td><td></td></tr><tr><td>Fiat &#x3C;> Stablecoin</td><td>Visa</td></tr><tr><td>Benchmark</td><td>FTSE 3-Month U.S. Treasury Bill Index</td></tr></tbody></table>

### Minimums

| Initial Investment                     | $0.00 |
| -------------------------------------- | ----- |
| Additional Investment                  | $0.00 |
| Initial Group Retirement Investment    | $0.00 |
| Additional Group Retirement Investment | $0.00 |
| Required Balance                       | $0.00 |
| Direct Deposit                         | $0.00 |

### Fees & Expenses

| SALES CHARGE LOAD           | None |
| --------------------------- | ---- |
| PURCHASE FEE                | None |
| REINVESTED DIVIDENDS CHARGE | None |
| REDEMPTION FEE              | None |
| MANAGEMENT FEES             | None |
| PERFORMANCE FEE             | None |
| TWELVE B1 DISTRIBUTION FEE  | None |
| YIELD DISTRIBUTION FEE      | 100% |


# Coverage Reports

Coming soon...


# Audit Reports

Coming soon...


# Attestations

Coming soon...


# XFT500

Coming soon...


# XFT Bitcoin Tokenized Trust

XFT Bitcoin Tokenized Trust (BTCX) is a yield-bearing stablecoin backed by bitcoin structured as a closed-end interval fund.

Address: [0x31a9a231c3c9d65C807A9B608d4e43eac00e557F](https://xft.finance/btcx)

WHY BTCX?\
Corporate treasuries gain tax-efficient exposure to bitcoin without cash flow risk from holding directly with XFT's yield-bearing stablecoin backed by bitcoin.&#x20;

Yield-bearing collateral for insurance float. Remove invested asset-driven liquidity risk so you can focus on sound underwriting.

<mark style="color:red;">Problem Statement</mark>\
Corporate treasuries demand bitcoin exposure but sacrifice cash flow risk via holding bitcoin directly. Since BTC price appreciates, realizing income for the treasury means selling and capital gains tax implications. Tax drag.

<mark style="color:red;">Solution</mark>\
XFT Bitcoin Tokenized Trust (BTCX) is a yield-bearing stablecoin backed by bitcoin. XFT understands that the health of a business is measured by its cash flow. BTCX allows corporates to deploy proper bitcoin treasury strategies without the extra tax implications or cash flow risk from holding bitcoin directly. BTCX offers:

* Bitcoin yield-profile
* Tax-efficiency
* Daily cash flow
* Stable $1 unit price
* Internet-native collateral mobility
* Passively-managed, compliant investment vehicle

Contact XFT to learn more about BTCX here: <https://xft.finance/contact>


# Arbitrage

**NYSE Premium:** Buy 10 Arbitrum tokens ($10) → convert to 1 NYSE share → sell NYSE ($10.50) = $0.50 profit​

**NYSE Discount:** Buy 1 NYSE share ($9.50) → convert to 10 Arbitrum tokens → sell tokens ($10) = $0.50 profit​


# Why CEF?

Listed CEF offers 3 layers of liquidity.&#x20;

<https://btcx-nav.netlify.app/>


# XFT Diversified Credit Fund

XFT Diversified Credit Fund (the "Fund") is a closed-end management investment company that is operated as an interval fund.


# XFT Government Stablecoin Fund

XFT is a digital asset management firm and investment bank. Our mission is to use blockchains to build resilient internet capital markets, starting with custom stablecoins for corporations.

### Investment Objective

The Fund seeks to provide current income while maintaining liquidity and a stable share price of $1.

### Fees and Expenses

The following tables describe the fees and expenses you may pay if you buy, hold, and sell shares of the Fund. You may pay other fees, such as brokerage commissions and other fees to financial intermediaries, which are not reflected in the tables and example below.

#### Shareholder Fees

*(Fees paid directly from your investment)*

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Sales Charge (Load) Imposed on Purchases</td><td valign="top">None</td></tr><tr><td valign="top">Purchase Fee</td><td valign="top">None</td></tr><tr><td valign="top">Sales Charge (Load) Imposed on Reinvested Dividends</td><td valign="top">None</td></tr><tr><td valign="top">Redemption Fee</td><td valign="top">None</td></tr><tr><td valign="top">Yield Distribution Fee</td><td valign="top">20%</td></tr></tbody></table>

#### Annual Fund Operating Expenses

*(Expenses that you pay each year as a percentage of the value of your investment)*

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Management Fees</td><td valign="top">0.00%</td></tr><tr><td valign="top">12b-1 Distribution Fee</td><td valign="top">None</td></tr><tr><td valign="top">Other Expenses</td><td valign="top">0.01%</td></tr><tr><td valign="top">Total Annual Fund Operating Expenses</td><td valign="top">0.01%</td></tr></tbody></table>

Example

The following example is intended to help you compare the cost of investing in the Fund with the cost of investing in other mutual funds. It illustrates the hypothetical expenses that you would incur over various periods if you were to invest $10,000 in the Fund’s shares. This example assumes that the Fund provides a return of 5% each year and that total annual fund operating expenses remain as stated in the preceding table. You would incur these hypothetical expenses whether or not you were to redeem your investment at the end of the given period. Although your actual costs may be higher or lower, based on these assumptions your costs would be:

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">1 Year</td><td valign="top">3 Years</td><td valign="top">5 Years</td><td valign="top">10 Years</td></tr><tr><td valign="top">$9</td><td valign="top">$29</td><td valign="top">$51</td><td valign="top">$115</td></tr></tbody></table>

### Principal Investment Strategies

• Normally investing at least 99.5% of total assets in cash and U.S. Treasury securities.

• Normally investing in securities whose interest is exempt from state and local income taxes.

• Investing in compliance with industry-standard regulatory requirements for money market funds for the quality, maturity, liquidity, and diversification of investments.

In addition, the fund normally invests at least 80% of its assets in U.S. Treasury securities.

Treasury securities are high-quality securities issued or guaranteed by the U.S. Treasury. Treasury securities are backed by the full faith and credit of the U.S. Treasury. Treasury securities usually pay a fixed, variable, or floating rate of interest, and must repay the amount borrowed, usually at the maturity of the security.

### Use of Blockchain

The fund’s transfer agent maintains the official record of share ownership of the Dollar class in book-entry form. Ownership of the Dollar class will also be recorded – or digitized – on a public blockchain. Although the secondary recording of the Dollar class on a blockchain will not represent the official record of ownership, the transfer agent will reconcile the secondary blockchain transactions with the official records of the Dollar class on at least a daily basis during business days under normal conditions. Reconciliation involves maintaining a matching book-entry record and blockchain record of the total number of shares in circulation and the ownership of the shares at any given time.

A blockchain is an open, distributed ledger that digitally records transactions in a verifiable and immutable (*i.e.*, permanent) way using cryptography. A distributed ledger is a database in which data is stored in a decentralized manner. Cryptography is a method of storing and transmitting data in a particular form so that only those for whom it is intended can read and process it. A blockchain stores transaction data in “blocks” that are linked together to form a “chain”, hence the name blockchain.

The secondary recording of Dollar class shares on a blockchain will not affect the fund’s investments or its investment strategies. The fund will invest, consistent with Rule 2a-7 under the Investment Company Act of 1940 (1940 Act), at least 99.5% of total assets in cash and U.S. Treasury securities. The fund will not invest in any crypto assets.

For more information regarding the use of blockchain technology for the Dollar class, see “Use of Blockchain” in the Fund Basics section of this prospectus. More detailed information about blockchain technology and the public blockchain network(s) used by the fund’s transfer agent, including the regulatory, operational and technological risks associated with distributed ledger technology, as well as detailed information about the fund and its policies and risks, can be found in the fund’s Statement of Additional Information (SAI).

### Principal Investment Risks

• *Interest Rate Changes.*

Interest rate increases can cause the price of a money market security to decrease.

• *Income Risk.*

A low or negative interest rate environment can adversely affect the fund’s yield.

• *Issuer-Specific Changes.*

A decline in the credit quality of an issuer can cause the price of a money market security to decrease.

• *U.S. Treasury Obligations.*

U.S. Treasury obligations are high-quality securities issued or guaranteed by the U.S. Treasury providing minimal risk of loss of principal if held to maturity. Fluctuations in interest rates may cause the market value of such securities to vary.

*You could lose money by investing in the fund*. *Although the fund seeks to preserve the value of your investment at $1.00 per share, it cannot guarantee it will do so*. *An investment in the fund is not a bank account and is not insured or guaranteed by the Federal Deposit Insurance Corporation or any other government agency*. *Fidelity Investments and its affiliates, the fund’s sponsor, is not required to reimburse the fund for losses, and you should not expect that the sponsor will provide financial support to the fund at any time, including during periods of market stress.*

*The fund will not impose a fee upon the sale of your shares.*

### Performance

Performance history will be available for the fund after the fund has been in operation for one calendar year.

### Investment Advisor

The XFT Group, Inc. (XFT)

### Portfolio Managers

To be determined.

### Purchase and Sale of Shares

Shares are offered to certain institutional investors who complete an application with the fund.

To open a new account to purchase Dollar class shares, please contact XFT at <invest@xft.finance>.

Prior to opening your account, the fund will collect certain information from you in accordance with its anti-money laundering and know-your-customer policies and procedures.

The price to buy one share is its net asset value per share (NAV). Shares will be bought at the NAV next calculated after an order is received in proper form. At this time, the transaction fees associated with validating transactions on the Ethereum or any other blockchain network will be borne by the Adviser or its affiliates. In the future, investors may be responsible for these fees, for some or all of their transactions involving fund shares.

The price to sell one share is its NAV. Shares will be sold at the NAV next calculated after an order is received in proper form.

You may purchase or redeem Dollar class shares of the fund at any time, although purchases and redemptions of shares will only be processed during normal business hours on business days.

The fund is open for business each day the New York Stock Exchange (NYSE) is open.

Even if the NYSE is closed, the fund will be open for business on those days on which the Federal Reserve Bank of New York (New York Fed) is open, the primary trading markets for the fund’s portfolio instruments are open, and the fund’s management believes there is an adequate market to meet purchase and redemption requests.

Fund class shares have a minimum initial investment of $1,000,000. The fund may waive or lower purchase minimums.

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Initial Investment</td><td valign="top">$0.00</td></tr><tr><td valign="top">Additional Investment</td><td valign="top">$0.00</td></tr><tr><td valign="top">Initial Group Retirement Investment</td><td valign="top">$0.00</td></tr><tr><td valign="top">Additional Group Retirement Investment</td><td valign="top">$0.00</td></tr><tr><td valign="top">Required Balance</td><td valign="top">$0.00</td></tr><tr><td valign="top">Direct Deposit</td><td valign="top">$0.00</td></tr><tr><td valign="top">Initial Investment</td><td valign="top">$0.00</td></tr><tr><td valign="top">Additional Investment</td><td valign="top">$0.00</td></tr></tbody></table>

### Tax Information

The Fund’s distributions may be taxable as ordinary income or capital gains. If you are investing through a tax-advantaged account, such as an IRA or an employer-sponsored retirement or savings plan, special tax rules apply. You should consult your own tax advisor with respect to any particular U.S. or non-U.S. tax consequences of your investment in the Fund.

### Payments to Financial Intermediaries

The Fund and its investment advisor do not pay financial intermediaries for sales of Fund shares.

### Fund Distribution

The fund is composed of multiple classes of shares. All classes of the fund have a common investment objective and investment portfolio.

### Legal Structure

The Fund is a Delaware Series Trust, registered as a non-diversified, closed-end management company under the 1940 Act. The Board of Trustees may authorize multiple series or classes of shares. The Fund does not intend to hold annual shareholder meetings.

The fund intends to be a “government money market fund,” as such term is defined in or interpreted under Rule 2a-7 under the Investment Company Act of 1940 (1940 Act).

&#x20;


# Official media accounts

The company will not communicate any information broadly or directly from any other account than the ones below.

* Website: [https://xft.finance](https://xft.finance/)
* App: [https://app.xft.finance](https://app.xft.finance/)
* Github: <https://github.com/xftcrypto>
* Twitter: <https://x.com/xftlabs>
* LinkedIn: [https://www.linkedin.com/company/xfintech](https://www.linkedin.com/company/xfintech/)


# Terms and Conditions


# What is the BITNET?

BITNET is an onchain trading system home to 20000+ tokenized securities across all asset classes.


# Accounts

To use BITNET, users need to first open either an omnibus or individual wallet account with XFT.

| ACCOUNT TYPE       | CONTAINS                          |
| ------------------ | --------------------------------- |
| &#xD;Omnibus &#xD; | Subaccounts of multiple investors |
| Individual         | Single investor                   |

**FBO Accounts:** Banks hold funds on behalf of fintech’s end-users.

**Omnibus Accounts:** Brokers or intermediaries pool multiple clients’ funds in a single account without individual segregation.

**OBO Accounts:** Funds are managed on behalf of a specific client, common in asset management and trust services. Each model presents advantages in efficiency, customization, and regulatory handling, along with potential compliance risks.


# Omnibus

XFT Omnibus Accounts

BITNET wallet account held by an intermediary for many investors managed by XFT.

<mark style="color:purple;">FAQS</mark>

<details>

<summary>Who is the omnibus wallet account for?</summary>

Intermediaries with investors. For example, Robinhood would open an omnibus wallet account with XFT to use the BITNET.

Their <mark style="color:purple;">single omnibus account</mark> manages all the individual Robinhood brokerage accounts or "<mark style="color:red;">subaccounts</mark>" interacting with the BITNET through Robinhood's exchange.

</details>


# Individual & Segregated

XFT Individual & Segregated Accounts

BITNET wallet accounts owned by a single investor managed by XFT.


# Non-Custodial

XFT Non-Custodial Accounts

<mark style="color:purple;">Coming soon...</mark>


# Blockchain


# Public Equities

XFT's ecosystem offers all 2900+ NYSE-listed and all 4900+ Nasdaq-listed equity products onchain. International exchange venues coming soon.

* NYSE-listed: [xft.finance/nyse](https://xft.finance/nyse)
* Nasdaq-listed: [xft.finance/nasdaq](https://xft.finance/nasdaq)

See [xft.finance/stocks](https://xft.finance/stocks) for full list of tokenized public equity products.


# Convertible Bonds

### Arbitrum Sepolia

<table><thead><tr><th>Symbol</th><th>Name</th><th width="375">Address</th></tr></thead><tbody><tr><td>US018802AD07</td><td>LNT 3.25 05/30/28</td><td>0x25A57BAcA8e2025b06684740D959FD5795562B4b</td></tr><tr><td>US40171VAB62</td><td>GWRE 1.25 11/01/29</td><td>0xD7565818615eD7af1c8c0429A8db1773273D05E0</td></tr><tr><td>US501812AC50</td><td>LCII 3 03/01/30</td><td>0x7dC88274fFEcA34B1edEB2CDa52C8ae697077887</td></tr><tr><td>US26210CAC82</td><td>DBX 0 03/01/26</td><td>0x1A775A4E6b06dF6325ACf6eab8FEf562Aa8bdF23</td></tr><tr><td>US60937PAD87</td><td>MDB 0.25 01/15/26</td><td>0xbcf4e319795B8fc5ba9644bd4824d7B65adA53bb</td></tr><tr><td>US55826TAB89</td><td>SPHR 3.5 12/01/28</td><td>0x9DbB788f266088e9f3f8053BDe2DB5593f32B164</td></tr><tr><td>US34379VAA17</td><td>FLNC 2.25 06/15/30</td><td>0x9d1FDaFC0a54200659C9BF2eb10A0fD3139Ba972</td></tr><tr><td>US450056AA40</td><td>IRTC 1.5 09/01/29</td><td>0x18876D5EAcfd50351a2C4B3DDAB6a592503c21b0</td></tr><tr><td>US594972AT86</td><td>MSTR 0 03/01/30</td><td>0x946665Caf4907CAaD409dFFf4956139E12C5ADFa</td></tr><tr><td>US595017AF11</td><td>MCHP 1.625 02/15/27</td><td>0xB4b804F532783446d660f42e002151A5cc0A497F</td></tr><tr><td>US842587DY03</td><td>SO 4.5 06/15/27</td><td>0xE3777f57d875750Dd4f7aD86dA8ABb2Df5690921</td></tr><tr><td>US91680MAC10</td><td>UPST 2 10/01/29</td><td>0x5cC523418844f271673aA15D803B756757f139cA</td></tr><tr><td>US21874AAE64</td><td>CORZ 0 06/15/31</td><td>0xDDeF34EB9a0BCA14e339A42B002736A0B43E89Ce</td></tr><tr><td>US679295AD75</td><td>OKTA 0.125 09/01/25</td><td>0x803409ab5c824B43204A55508f921a5fCE0E6655</td></tr><tr><td>US723484AJ01</td><td>PNW 4.75 06/15/27</td><td>0xB36Ff52D9B41422722856507A69C0618100Bc380</td></tr><tr><td>US01644JAA60</td><td>ALKTEC 1.5 03/15/30</td><td>0x106FA021eBAA8056Bb69169788fABb071E9A8FC7</td></tr><tr><td>US57164YAF43</td><td>VAC 3.25 12/15/27</td><td>0x3d2914e62E31906Ee5c641FAefed0f2c54174Fb4</td></tr><tr><td>US549498AC76</td><td>LCID 5 04/01/30</td><td>0x29e694aAd1567336b2DBF5893867cF63Cb832E2b</td></tr><tr><td>US767292AA33</td><td>RIOT 0.75 01/15/30</td><td>0xc2111Af3dB706808ab34C0a49f96036bd71050A2</td></tr><tr><td>US387328AF41</td><td>GVA 3.25 06/15/30</td><td>0x663628E53dc342357cE639749BDb821a388e6e48</td></tr><tr><td>US69349HAE71</td><td>TXNM 5.75 06/01/54</td><td>0x112722918dC3E38097a5C3ed4aB37aEaE41Ed86A</td></tr><tr><td>US00971TAN19</td><td>AKAM 1.125 02/15/29</td><td>0xe219d82E87FBfE7985e25695a0350B24ce2fECf6</td></tr><tr><td>US345370CZ16</td><td>F 0 03/15/26</td><td>0xd2544faf0Ed7646Db23868966D3e1A6Cb78B0Ed5</td></tr><tr><td>US338307AE16</td><td>FIVN 1 03/15/29</td><td>0x551E3b7b8AbF838B5D2bff0D7388eec887D6a175</td></tr><tr><td>US292554AP79</td><td>ECPG 4 03/15/29</td><td>0x3C9592648940b1830E307b13efA1e84B53995b95</td></tr><tr><td>US29786AAP12</td><td>ETSY 1 06/15/30</td><td>0x765e6A50387Fd8b5Da17FCee8E84F1A9926a1965</td></tr><tr><td>US30063PAD78</td><td>EXAS 2 03/01/30</td><td>0x100c1a4956F7Cb0dDB22BC55359E381Cfb3a27C9</td></tr><tr><td>US55303JAB26</td><td>MGPI 1.875 11/15/41</td><td>0xD2779d15EFf99358d32aA9b1FFE44b6F4eae1ac8</td></tr><tr><td>US09061GAK76</td><td>BMRN 1.25 05/15/27</td><td>0xb749AF7bBeCfd7007f97120Df0Facf6E726412Dd</td></tr><tr><td>US538034BB47</td><td>LYV 2.875 01/15/30</td><td>0x5550B1E7A03123550e82e2B8ba37566180d4d903</td></tr><tr><td>US59001ABE10</td><td>MTH 1.75 05/15/28</td><td>0x0be711c56ACB217E4C508ECF8Fef7BC4881A431a</td></tr><tr><td>US695127AJ95</td><td>PCRX 2.125 05/15/29</td><td>0x9174526003477DAe93263a8db1BBbC3D838b02A3</td></tr><tr><td>US565788AE61</td><td>MARA 0 03/01/30</td><td>0x7CF8613c3ebb6D9D57199fFBE110BAA4d8330A26</td></tr><tr><td>US500688AG18</td><td>KOS 3.125 03/15/30</td><td>0x951A3eeDa9aF7D41A48aA90a5d540B90163BC3BE</td></tr><tr><td>US538034BA63</td><td>LYV 3.125 01/15/29</td><td>0xA0Cff9129F74F525d4a50a3669bFF665fd2d9D5F</td></tr><tr><td>US55024UAD19</td><td>LITE 0.5 12/15/26</td><td>0xc8B15D35b2E9F45789AdE0855612a2c558c90E48</td></tr><tr><td>US67059NAH17</td><td>NTNX 0.25 10/01/27</td><td>0xD7357E3FA7f5A2AEC99CAe989a47c625cbE01E43</td></tr><tr><td>US55306NAA28</td><td>MKSI 1.25 06/01/30</td><td>0x4fAd8D80e954934964ED58D52D045494Af787e2F</td></tr><tr><td>US68213NAD12</td><td>OMCL 0.25 09/15/25</td><td>0x8788a6B6B5Ba969453f32604B85F51d241744D15</td></tr><tr><td>US65341BAG14</td><td>NEP 2.5 06/15/26</td><td>0xda47eB8395e42119c82ae3890e49B8FB4c190710</td></tr><tr><td>US594972AE18</td><td>MSTR 0 02/15/27</td><td>0xcb2d357e58c1A194a858DeFbBe64505DbF1344f9</td></tr><tr><td>US594972AM34</td><td>MSTR 2.25 06/15/32</td><td>0x876006e6886a4a205b1b5F79151f6037C3EDe250</td></tr><tr><td>US595017BF02</td><td>MCHP 0.75 06/01/30</td><td>0xEC7Ae454586e63F7ec9550c6E78aFDcDDD892ed8</td></tr><tr><td>US70202LAC63</td><td>PSN 2.625 03/01/29</td><td>0xfbb80444b4dc94dD5F98F3D1126E6622f1dD4FB4</td></tr><tr><td>US018802AC24</td><td>LNT 3.875 03/15/26</td><td>0x490AD550e1EEa3E081F5baCf64E519b38D7684b1</td></tr><tr><td>US70614WAC47</td><td>PTON 5.5 12/01/29</td><td>0xbe5CFd868128E614384591E0faf695670b08dc6C</td></tr><tr><td>US833445AC37</td><td>SNOW 0 10/01/29</td><td>0x1963b016dfA93a6504A8850689757A063c838deE</td></tr><tr><td>US92939UAP12</td><td>WEC 4.375 06/01/27</td><td>0x502Cd51d0adC8A62749B571A3d57f6661EFD6aB0</td></tr><tr><td>US98980GAB86</td><td>ZS 0.125 07/01/25</td><td>0x0c2d571e9Eea05EfD76298fcB23949D5130760b7</td></tr><tr><td>US125896BX77</td><td>CMS 3.375 05/01/28</td><td>0x918f711521A32748f982CaF5B3Ab6a284C4fFF0F</td></tr><tr><td>US91332UAG67</td><td>U 0 03/15/30</td><td>0xB072E1811e0e8704D42EF33e0566830b615756Cb</td></tr><tr><td>US92766KAA43</td><td>SPCE 2.5 02/01/27</td><td>0xd305430AB0965f1daC3a5BD765e6fbCc79277b6d</td></tr><tr><td>US98149GAB68</td><td>WKC 3.25 07/01/28</td><td>0x56207778d188317c215Fbf35C52761b2993B9970</td></tr><tr><td>US98139AAD72</td><td>WK 1.25 08/15/28</td><td>0x6e35bee9599fBd91FA12d1F0E863aFb538913CA4</td></tr><tr><td>US15643UAD63</td><td>LEU 2.25 11/01/30</td><td>0x3ee980CDDd180C1B68a5E6d3dF8698b402bd5604</td></tr><tr><td>US163086AE15</td><td>CHEF 2.375 12/15/28</td><td>0xa3E2A9356c6FA1AF09CaB3B270420C9689737E12</td></tr><tr><td>US358039AB12</td><td>FRPT 3 04/01/28</td><td>0x83E5f0f148991670068A17E031a534231E5b8255</td></tr><tr><td>US40637HAD17</td><td>HALO 0.25 03/01/27</td><td>0x770869230CecefeF9463122A5a0189D9ED64B5bc</td></tr><tr><td>US553368AC59</td><td>MPUS 3 03/01/30</td><td>0xA63bF1071d25De5cA4E00b1a396bF63A6DB9BdEd</td></tr><tr><td>US516544AB96</td><td>LNTH 2.625 12/15/27</td><td>0x454b719072d63Cca61837bd7B00B7E3278A97B70</td></tr><tr><td>US753422AH70</td><td>RPD 1.25 03/15/29</td><td>0x86Ea96D6f55a4fBF35798C01541c5C8a464C9fE7</td></tr><tr><td>US83304AAF30</td><td>SNAP 0 05/01/27</td><td>0x3B672fA81d2928dC20Dfb69b4122d8c81bec7977</td></tr><tr><td>US86745KAF12</td><td>NOVA 0.25 12/01/26</td><td>0x7c9eE18aaA0bfe8b323B904637F6eeC40f501D43</td></tr><tr><td>US86745KAH77</td><td>NOVA 2.625 02/15/28</td><td>0x4582c8c602a19B6993Df93cf18b0dCedD120D975</td></tr><tr><td>US902252AB17</td><td>TYL 0.25 03/15/26</td><td>0xC2eB83dA41ddAd3BF1361EdFFC9c3b21964434f1</td></tr><tr><td>US89377MAB54</td><td>TMDX 1.5 06/01/28</td><td>0x1A604D1feF4B00010105c2a3a5691676E745ddc8</td></tr><tr><td>US92939UAN63</td><td>WEC 4.375 06/01/27</td><td>0xdaF2eEa0b32C247Eddafad790eBB587c95E97fE9</td></tr><tr><td>US00971TAL52</td><td>AKAM 0.375 09/01/27</td><td>0xEebB003083D6a8AEbcA5bf3fd128fF925b45310b</td></tr><tr><td>US009066AB74</td><td>ABNB 0 03/15/26</td><td>0x4e604BE24cCad5E4d7420dFaf75bdDCd94a056B3</td></tr><tr><td>US007973AE02</td><td>AEIS 2.5 09/15/28</td><td>0x2A3815066D1CFf4897aE2F06ba8DF04afE1FB7e5</td></tr><tr><td>US011642AB16</td><td>ALRM 0 01/15/26</td><td>0x64cB0CA038Fe503f698f8E3DCb9F767b425C5B40</td></tr><tr><td>US974637AF75</td><td>WGO 3.25 01/15/30</td><td>0x0180bAd31bdF75B0BF60E75FE172e932FF4D3840</td></tr><tr><td>US04271TAB61</td><td>ARRY 1 12/01/28</td><td>0xA85B87daa7E0D1bCbdd82628499b1EF9Cc7bc4A2</td></tr><tr><td>US093712AK34</td><td>BE 3 06/01/28</td><td>0x4b43B6512A86B5fA699ecE973e2286e4DD5bd98F</td></tr><tr><td>US29415FAD69</td><td>NVST 1.75 08/15/28</td><td>0xFd972d33A233bb18De2dc9542c1D500C454Fd319</td></tr><tr><td>US25809KAA34</td><td>DASH 0 05/15/30</td><td>0xB1702BaF6d93a293f4Be8205fe5A05DCBedfbaff</td></tr><tr><td>US19260QAB32</td><td>COIN 0.5 06/01/26</td><td>0xC8266Db215F7DA2f781bCbDe4A3D8F5C852a80e0</td></tr><tr><td>US26142RAB06</td><td>DKNG 0 03/15/28</td><td>0x2450e519fd27F312259A1b3613AddA5eb6D5EaE6</td></tr><tr><td>US252131AM94</td><td>DXCM 0.375 05/15/28</td><td>0xE13c84443e13283C9E42deEDbc4A8D578cc7471C</td></tr><tr><td>US337932AS64</td><td>FE 3.625 01/15/29</td><td>0x3c97BFa21341E008be07d0CCA84FFBA65060f931</td></tr><tr><td>US29786AAL08</td><td>ETSY 0.125 09/01/27</td><td>0x9FE1101b25D9E6Dd650b1aD75DD366082f22F711</td></tr><tr><td>US30212PBE43</td><td>EXPE 0 02/15/26</td><td>0xBfC6D32179B82369390077C489Cf74a5fD60C30C</td></tr><tr><td>US30063PAB13</td><td>EXAS 0.375 03/15/27</td><td>0xD2B98eB8A39E7a4cD17Bd7889946bB1395281770</td></tr><tr><td>US337932AU11</td><td>FE 3.875 01/15/31</td><td>0x2717BD4777A6Ac73dc37F2AFf9d0E1e5908c9aFD</td></tr><tr><td>US387328AD92</td><td>GVA 3.75 05/15/28</td><td>0xDc090493aa94fB0669f08943658D7dA2FDe50BFB</td></tr><tr><td>US37940XAT90</td><td>GPN 1.5 03/01/31</td><td>0x5a0Ab2644593935D41B17bD29ce09d1B9C3B3c2c</td></tr><tr><td>US387328AE75</td><td>GVA 3.25 06/15/30</td><td>0x24A1DDd5f0E6955abC80Ff97E06e144a4bF5257B</td></tr><tr><td>US565788AG10</td><td>MARA 0 06/01/31</td><td>0xAf3092921C476043fC9DC7a82BACF99fc27FD3eB</td></tr><tr><td>US40131MAB54</td><td>GH 0 11/15/27</td><td>0xE1ABBcD76Eb20756cC9BedB4b1E71E3b0E80f037</td></tr><tr><td>US589889AA22</td><td>MMSI 3 02/01/29</td><td>0x32BACb2bE0f276cE1607d83faBE9580d7eaD95a9</td></tr><tr><td>US45826HAB50</td><td>ITGR 2.125 02/15/28</td><td>0x49ADC5371C3c4e18716B4257506B0d5dc7De2AE4</td></tr><tr><td>US462222AF72</td><td>IONS 1.75 06/15/28</td><td>0x0aAb86B98a3a6C3Bc7a4354F9a6a4E512eD57b3d</td></tr><tr><td>US45667GAG82</td><td>INFN 3.75 08/01/28</td><td>0x57A5FB07c7945EC9181Fe9Ec12330EB42bCdC3fB</td></tr><tr><td>US465741AP18</td><td>ITRI 1.375 07/15/30</td><td>0x74410084F4016C903F0bc51A429227dccFdc7C0c</td></tr><tr><td>US457985AM13</td><td>IART 0.5 08/15/25</td><td>0xb94202ca18aD8f53C628c4433Ea1ae94B1cd2486</td></tr><tr><td>US594972AH49</td><td>MSTR 0.625 03/15/30</td><td>0x52955351cbe0a5D1da9F8526d3d6a1Bc40F91365</td></tr><tr><td>US686688AB85</td><td>ORA 2.5 07/15/27</td><td>0x78691985876522f7D81b31e6d4dc6C2DC2Da7ce6</td></tr><tr><td>US70509VAA89</td><td>PEB 1.75 12/15/26</td><td>0xe8257eBA9d12dBE14FFF75ddDa0e62CE881dF8b1</td></tr><tr><td>US703343AG80</td><td>PATK 1.75 12/01/28</td><td>0xa367122d13AB5f6cf399F10BE24976a2BB3F1C9A</td></tr><tr><td>US737446AT14</td><td>POST 2.5 08/15/27</td><td>0x201e591Aea88adA2887bd913b0cacB683f1d9e33</td></tr><tr><td>XS2240512124</td><td>GBLBBB 0 12/29/23 G1A</td><td>0x924B8d6BA1e13Ae88E866082BF9210cba874d745</td></tr><tr><td>BE6339419812</td><td>GBLBBB 2.125 11/29/25</td><td>0x67Ce50B2078065fB28E62C965C2272222d68fac8</td></tr><tr><td>US62914VAJ52</td><td>NIO 3.875 10/15/29</td><td>0xB364C4F6Cc28D074A12c1669e78d925B46303bc8</td></tr><tr><td>US404280AS86</td><td>HSBC V6.375 PERP .</td><td>0x2A90652335FC7AaCb97A1EEb9c58204F020b4dfa</td></tr><tr><td>FR0013246147</td><td>ORPAR 0 06/20/24 RCO</td><td>0x2e239967A6ebAB1cdAc7D636679568C721A0903D</td></tr><tr><td>US83205YAD67</td><td>PENG 2 08/15/30</td><td>0xba5A5948C1eA7f7557d0314FEca27aC7e0c278d5</td></tr><tr><td>US56087FAC86</td><td>MMYT 0 07/01/30</td><td>0x016a9b4152353ef1f392EC6172361733a155Ff46</td></tr><tr><td>FR00140001X1</td><td>VLTSA 1 01/13/25</td><td>0x05D7a5b4633483A5AB8C0E1f102E6316b14CAb05</td></tr><tr><td>XS1961836712</td><td>COVBS V6.875 PERP</td><td>0x0f9ffC9DAf35a0e679b44E7C75A9Cd65B5F3615f</td></tr><tr><td>US98980AAB17</td><td>ZTO 1.5 09/01/27</td><td>0x2CE3E99d4a3C060126E0fF60A4287B9017897548</td></tr><tr><td>FR0013513041</td><td>SAFFP 0.875 05/15/27 SAF</td><td>0xEd87e3eb8a8f9E0906A9717A3B71cF903AFd505D</td></tr><tr><td>USQ08328AA64</td><td>ANZ V6.75 PERP REGS</td><td>0x547aB789c9a823E73B86532d0a316fdf46A602a2</td></tr><tr><td>FR0013489739</td><td>CLARFP 0.875 03/06/27</td><td>0xEbD24eeda2f87F0456388883dd987CE6578f7F42</td></tr><tr><td>XS1982682673</td><td>SCYRSM 3.75 04/25/24</td><td>0xE16a0204AA8AE1423551A8a96cC14dAd6397899D</td></tr><tr><td>XS2021212332</td><td>CLNXSM 0.5 07/05/28 CLNX</td><td>0x908963Be2baBcbC11623a8eb93f372976CD73F53</td></tr><tr><td>BE0002961424</td><td>KBCBB V8 PERP</td><td>0xa5A1f6699d0581b25DF1AE1fD4921E88CC15fD2e</td></tr><tr><td>DE000A1MA904</td><td>CEWGR 3.5 PERP</td><td>0xE260d28Ab5952B433fAdCfDb52572e7c050fd00E</td></tr><tr><td>DE000A3E4597</td><td>ZALGR 0.625 08/06/27 B</td><td>0x0B4458016674F5b0a15B2D7ab65f823e62feA312</td></tr><tr><td>BE0002651322</td><td>BCART 4 11/09/27</td><td>0x036afd1416184D3c830FE3d6BFa4263265Ea5492</td></tr><tr><td>BE0002638196</td><td>KBCBB V4.75 PERP</td><td>0x3373db5764DfB9f47C7Ac0cbe1c1BF773B0436Df</td></tr><tr><td>FR0014003Z32</td><td>SAFFP 0 04/01/28 SAF</td><td>0xd6C4254e1B9846d13826912a6FbB824396d9Be0d</td></tr><tr><td>CH0536893594</td><td>DOCMSW 2.75 03/31/25</td><td>0x6D308C3ecb5D647ed34D780557dFFBFA4B79eb9D</td></tr><tr><td>US05156XAG34</td><td>ACBCN 5.5 02/28/24</td><td>0xD5dA32Ae47Dd28f1f6d11DBA58E89365aac30d80</td></tr><tr><td>CH0486598227</td><td>CMBNSW 0 07/09/26</td><td>0x7F4AE31A4504b9D4eDa7F5eCc4c3c00B0Ef1F42e</td></tr><tr><td>XS2303829308</td><td>JPM 0 02/18/24</td><td>0x9FCB9615F92413F18f65198D7745D13324dbB404</td></tr><tr><td>XS2304902443</td><td>OZON 1.875 02/24/26</td><td>0xC222bC7A0ff4b44a8bA405dC194B1C034Eb4fa2e</td></tr><tr><td>DE000A254Y84</td><td>DEHEHO 0.25 01/23/24</td><td>0x49075552A69917D05FfeF78F10CBa9FC5abb6B06</td></tr><tr><td>DE000A289BQ3</td><td>LLFOND 5.5 07/17/24</td><td>0x8903c1DA530EBb40f3D4E91d71F02248731fDeB9</td></tr><tr><td>DE000A14J1K1</td><td>DTKONG 1.35 01/30/25 DKGA</td><td>0x8a0D22225D8a8790512879CC472C327ff81F4CBC</td></tr><tr><td>DE000A3H2UW2</td><td>BELMED 8.25 12/14/25</td><td>0x54Dbe0c7150fEDb48DE496E46513B939dcC28e78</td></tr><tr><td>DE000A13SHL2</td><td>SNSCGR 6.5 05/12/25</td><td>0x65878CC2A871e2E15A657AFEe24F08d1E922D54C</td></tr><tr><td>DE000A289DA3</td><td>HFGGR 0.75 05/13/25</td><td>0x999d8fDC035eA4a907c9095D6E52919047640B90</td></tr><tr><td>DE000A4DFSR9</td><td>FREGR 0 03/11/28</td><td>0x627D677b9E4E06359E91C168A16A2eE432Bc0B65</td></tr><tr><td>US02156BAD55</td><td>AYX 0.5 08/01/24</td><td>0xe036837615e0B40c89B2337cf9824ef6f8A94e06</td></tr><tr><td>US45667GAC78</td><td>INFN 2.125 09/01/24</td><td>0xB2E1B4957AFe6d447B68433f156F286A7621EFd2</td></tr><tr><td>US759916AB50</td><td>RGEN 0.375 07/15/24</td><td>0xbd39892689316CE86F50B8ae16665936d528f1F8</td></tr><tr><td>XS2275382286</td><td>WINSEM 0 01/14/26</td><td>0x6A0f41e613ec355590e697a74B1e4fb674B212E8</td></tr><tr><td>US89677QAA58</td><td>TCOM 0.75 06/15/29</td><td>0x95411c78966Be681414C17bfb72Ab489E3366eB3</td></tr><tr><td>XS1940192039</td><td>TKWYNA 2.25 01/25/24</td><td>0x9FDF2852Fc88aba941fAac8ba5B6744069C4491A</td></tr><tr><td>US958102AP07</td><td>WDC 1.5 02/01/24</td><td>0x43E3A5490F8025324EE331413A888Bf3E3b2f7cA</td></tr><tr><td>XS2126193379</td><td>YNDX 0.75 09/13/22</td><td>0xd526169A3c72DB711597347280c51e0053Bbb367</td></tr><tr><td>XS2105716554</td><td>PHARM 3 01/21/25</td><td>0xa99b11FA47ec816baEf07236bD50068766AC6C71</td></tr><tr><td>XS2308171383</td><td>AMXLMM 0 03/02/24</td><td>0xa97b9A9039A736993883D454A590589d786F1ec6</td></tr><tr><td>XS2342920050</td><td>MSCNTF 0 06/11/26</td><td>0x5a9AF2067df3a50b5F30f9Db190dA7cDCd2F8396</td></tr><tr><td>XS2352315571</td><td>JPM 0 06/10/24 MCFP</td><td>0x46870cDD60549E822a6B77DC63b4E3E5652C06E7</td></tr><tr><td>XS2388456456</td><td>MDLZ 0 09/20/24 MDLZ</td><td>0x87aF7A18bD53Ef632722305BA160f4D287f50167</td></tr><tr><td>DE000A3H2UK7</td><td>LHAGR 2 11/17/25 LHA</td><td>0x5d1712292a52C81552472aacd517b32B4A8Dfb80</td></tr><tr><td>XS1961891220</td><td>DXSAU 2.3 06/19/26</td><td>0x846669b5198b54cE3FB932eCDfFE78a146913478</td></tr><tr><td>US03765KAA25</td><td>TLRY 5.25 06/01/24</td><td>0x95E5ce97859875519Aa18D95617A08b861e70658</td></tr><tr><td>FR0013326204</td><td>CAFP 0 03/27/24</td><td>0x3C0A9C66D9d901e96133377B8F15ea2134fD361A</td></tr><tr><td>FR0013410628</td><td>AFFP 0.125 03/25/26</td><td>0x705DB9B4a94077245732D2b31637869383221202</td></tr><tr><td>FR0013444395</td><td>EDENFP 0 09/06/24 EDEN</td><td>0xC916a56b3205bFB1bdB4B0D673389Adb2110DB6A</td></tr><tr><td>FR0013448412</td><td>UBIFP 0 09/24/24 UBI</td><td>0x14041D26EdCF6D1FB89e85158E48c601B25aa094</td></tr><tr><td>NO0013219642</td><td>FRTBRA F 05/08/28 MAY</td><td>0xbF5e25064C0dc1188F85e09c5C0Ff10858580908</td></tr><tr><td>US09175RAB69</td><td>BTDR 5.25 12/01/29</td><td>0xA04227018c4e9f43EE1309EC4E245fc5Cb4ACc71</td></tr><tr><td>CH1105195684</td><td>DUFNSW 0.75 03/30/26</td><td>0xB63B5Eb269e2385493292e21f76eC1C287F4A77B</td></tr><tr><td>DE000A351ZH9</td><td>AAQGR 6 10/06/28</td><td>0x3828c68fc84b7aaf51C4A3BAA88F1307DCFD571a</td></tr><tr><td>DE000A283WZ3</td><td>AMSSW 2.125 11/03/27 .</td><td>0xA36E62c31c18397d56bB1D88F42bc63FFEB0e79c</td></tr><tr><td>DE000A30V8X3</td><td>PFRDEN 7.5 03/01/28</td><td>0xA0519D4688483811d8a4dca128e0648b30346a73</td></tr><tr><td>DE000A3E44N7</td><td>RAGSTF 0 06/17/26 EVK</td><td>0x3125F010e2495D80DD934BE940da4Ce09161EF4F</td></tr><tr><td>FR0013439304</td><td>WLNFP 0 07/30/26</td><td>0x73f67127D0B435Ad7F4391deC607c4e0DdF92a2c</td></tr><tr><td>FR0013515707</td><td>NEOEN 2 06/02/25</td><td>0xC32a148259A47EbA81792A14E2e541867D53a4E1</td></tr><tr><td>FR0014010NZ3</td><td>LRFP 1.5 06/23/33</td><td>0x4F174B543Ff85c8ebB5D05FD35F3048A5E9b4671</td></tr><tr><td>US05946KAG67</td><td>BBVASM V6.5 PERP 9</td><td>0xba2B6FFC9aA06a7F6B9CC75FbddEd60F4851FB7f</td></tr><tr><td>US47215PAH91</td><td>JD 0.25 06/01/29 144A</td><td>0xFD51bc8c9dD97AF6c29fC34fd479971b95B3df4c</td></tr><tr><td>US404280BL25</td><td>HSBC V6 PERP *</td><td>0xB20c26Bce6aea6E399Eef730912432C5eDAfa886</td></tr><tr><td>US404280EH85</td><td>HSBC V6.875 PERP ***</td><td>0xf7931FC1117b9A355493499E84b4e59F5B114723</td></tr><tr><td>US457669AB50</td><td>INSM 0.75 06/01/28</td><td>0x7013C184f1975bdEca19bEF5d531E7907a2A6AaF</td></tr><tr><td>DE000A2LQRA1</td><td>RAGSTF 0 10/02/24 EVK</td><td>0x90574925ae6C211ac6990aa243e2da58A65B2f44</td></tr><tr><td>DE000A3E5FE7</td><td>SOCHAI 5.75 04/07/24</td><td>0x731ec18bDdc62b7FBAc1E2a51D90e75dbc8A0149</td></tr><tr><td>US697435AF27</td><td>PANW 0.375 06/01/25</td><td>0x1E88A84b315C05311055Bb466EdCEb6F43459Fa3</td></tr><tr><td>US256163AD89</td><td>DOCU 0 01/15/24</td><td>0xE4E0E7169182BBaf3539d7Fc2BE5f3090A793b9E</td></tr><tr><td>US89677QAB32</td><td>TCOM 0.75 06/15/29</td><td>0x099a7A13F52cFD5C474E3Fe8F7689839B06ED27e</td></tr><tr><td>US853254BX70</td><td>STANLN V4.75 PERP 144A</td><td>0x60a27f5BE7B6c8fdf36f53866FAd589A10FC5012</td></tr><tr><td>USF1067PAG12</td><td>BNP V7.375 PERP REGs</td><td>0x1C20089E7d60838d3a10DD727812f58D997047DB</td></tr><tr><td>US090040AF30</td><td>BILI 0.5 12/01/26</td><td>0x8eFe29E4B63B2B26a4e3D5f4e38eEcf5F97b8436</td></tr><tr><td>US98986TAB44</td><td>ZNGA 0.25 06/01/24</td><td>0xb0d9e9C5A56a816A5F39ac29437cA29Cd3ec602B</td></tr><tr><td>US90184LAF94</td><td>TWTR 0.25 06/15/24</td><td>0xa579109594364EA9F763b8677625988fd79E0111</td></tr><tr><td>US98426TAF30</td><td>YY 1.375 06/15/26</td><td>0xB902D82BCfD53d842569d05fC77A32aE87354f76</td></tr><tr><td>US96122UAA25</td><td>WSTP V5 PERP</td><td>0xce026d8A9c35406A7D78cd27b798F45f6b573991</td></tr><tr><td>USG4939KAG16</td><td>IQ 4.625 03/15/30</td><td>0x18E542550f1b5a96556c72A41F0A44F49ddE1761</td></tr><tr><td>USG8208BAA91</td><td>JD 0.25 06/01/29 REGS</td><td>0x98acCeA16DaF1Cc2788Fbb699aB20d441750b81B</td></tr><tr><td>USG84228GE26</td><td>STANLN V7.875 PERP REGS</td><td>0xC8dE313eA3BC5B05a3254c4A2a3ad00eDEbA81dE</td></tr><tr><td>XS0147484074</td><td>AGSBB F PERP REGS</td><td>0x306b6780A95c732aB1b578E1C835151AcDDF98Aa</td></tr><tr><td>XS1964739715</td><td>VCTLUX 12.68 05/28/28</td><td>0x1D87FF75C40a859c0e0b92D112C803e5B6CA717b</td></tr><tr><td>US06738EBG98</td><td>BACR V8 PERP</td><td>0x608247EcaD85190ff3393b39D3834cD5FE9Aa425</td></tr><tr><td>XS2088760157</td><td>BATSJ 6.5 12/04/24</td><td>0xfAca98c9BDD15737A132476dDDe14249972b99E3</td></tr><tr><td>XS2190455811</td><td>OCDOLN 0.75 01/18/27</td><td>0x6c749077FECb28C385d07869986226ae336624d1</td></tr><tr><td>XS2239639433</td><td>VKCOLI 1.625 10/01/25 MAIL</td><td>0x79fcDCFe6F403A44ADB1A5CdFb9b51bd84a20114</td></tr><tr><td>XS2270378149</td><td>IWGLN 0.5 12/09/27</td><td>0x5683556Efc63171c63042d7aC111e4aF9a026A91</td></tr><tr><td>XS1799614232</td><td>GLENLN 0 03/27/25 GLEN</td><td>0x80be5eB379aE9CC4fA4ff7AB614270b98eC7a54e</td></tr><tr><td>XS2333568751</td><td>MEITUA 0 04/27/27</td><td>0xcAfA0B2f450Eb0380F352aCfca2dD825B9938742</td></tr><tr><td>XS2343113101</td><td>IAGLN 1.125 05/18/28 IAG</td><td>0xdF1ff5376F05d5C377C0Ec72397DeD5658E7FDB7</td></tr><tr><td>US53802LAB80</td><td>LIVN 2.5 03/15/29</td><td>0x567c63A756Ed9fA66bE91A738cc8aF65C6937F99</td></tr><tr><td>US539439AU36</td><td>LLOYDS V7.5 PERP</td><td>0x02a1bAd37E0e16a4a58A32Cf58020aC897297cC0</td></tr><tr><td>XS2576250448</td><td>BAC 0 01/30/26 TTE</td><td>0xDbd6843F73A6fec6e8513f71576052ecE1382bE2</td></tr><tr><td>US62914VAE65</td><td>NIO 0 02/01/26</td><td>0x8725CE610089FB06Df90cC57275374D63dcb9B5c</td></tr><tr><td>XS1933947951</td><td>GEELZ 0 06/19/24</td><td>0x97063258529a8Ac14f41ECc9e7Fb34DF0Fc1e462</td></tr><tr><td>XS1946847388</td><td>STOBLN 2.75 05/08/24</td><td>0x4685F7a4f3c22694Ea1fE32e6EFF7c67a65EF750</td></tr><tr><td>XS2541917105</td><td>CBGLN V11.125 PERP</td><td>0x7564f2dD3f478a5A1dD868C0Cd262D58B55B4562</td></tr><tr><td>XS2557565830</td><td>IBESM 0.8 12/07/27 IBE</td><td>0x4947E5CA21998636293ec12a780e6cb0E0f3CA47</td></tr><tr><td>DE000A254R42</td><td>GERRYW 3 12/31/23</td><td>0x80DBAf6E13D50BCC1038Bb9a199e374C81a921Ff</td></tr><tr><td>DE000A2DAHU1</td><td>FREGR 0 01/31/24 FREG</td><td>0xf72E622e1A44403B5EBfcb5075b7b20BEFFA0699</td></tr><tr><td>DE000A3H2XW6</td><td>MORGR 0.625 10/16/25 MOR</td><td>0x16E326aDDa61452b8d8aab683314Cc110Ea8ebCD</td></tr><tr><td>XS2264505566</td><td>JPM 0 12/28/23</td><td>0xF87641917e10768eB55FB9E681f49B31229b5954</td></tr><tr><td>XS2886113278</td><td>HONHAI 0 10/24/29</td><td>0x95413D20D132683A284aBe3f17aB466e3dCc9bC9</td></tr><tr><td>USF1067PAF39</td><td>BNP V8 PERP REGS</td><td>0x22451f96903C56E50FB42777eF51e777d75FE40F</td></tr><tr><td>US88160RAG65</td><td>TSLA 2 05/15/24</td><td>0x27BBa5b29cC43Ad5105cCeD9e0E3e604a351955C</td></tr><tr><td>CH0593093229</td><td>EFGBNK V5.5 PERP</td><td>0x8D5b297Ea4EDB84f218AFFa83dfc2F215C0485Bb</td></tr><tr><td>DE000A254NA6</td><td>PAGGR 7.5 12/09/24</td><td>0x3DAe7052a924720ffF2D0B612182e2d69eC6596F</td></tr><tr><td>DE000A3E4589</td><td>ZALGR 0.05 08/06/25 A</td><td>0x42c5Fc8B1761D15cdF264CA5fa420A9659304952</td></tr><tr><td>XS1908221507</td><td>QGEN 1 11/13/24</td><td>0xD2de180a6247b7Ee63596F6099D3C0Ce6ed700E4</td></tr><tr><td>XS2122174415</td><td>INTNED V4.875 PERP *</td><td>0xa6Cc95EaaE12a482EdF006D88eE30A063657AfA7</td></tr><tr><td>FR0013444148</td><td>VIEFP 0 01/01/25</td><td>0x0D4a4B00ebAd7A8b3A35ED1166dbd679593c4550</td></tr><tr><td>XS2090948279</td><td>OCDOLN 0.875 12/09/25</td><td>0xFf3bb609aa19a2d72AC5091e791Ebd7502743445</td></tr><tr><td>FR001400R1R6</td><td>SUFP 1.625 06/28/31 SUFP</td><td>0x9D045e9C402d57381Fa84Eb266C88235C8335D21</td></tr><tr><td>XS2257580857</td><td>CLNXSM 0.75 11/20/31 CLNX</td><td>0x32860f82e2c9D0B5fcb02EC093BaEDa8119965da</td></tr><tr><td>FR0014000OG2</td><td>SUFP 0 06/15/26</td><td>0x7D93Ba5B1Bb18A3E6E76BAeaAC6AFDBc6519912a</td></tr><tr><td>XS2296019891</td><td>TKWYNA 0 08/09/25 A</td><td>0x0Bb52b0c5c1C5e9105f9b5B9a8093eb8B730dD30</td></tr><tr><td>FR001400M9F9</td><td>SUFP 1.97 11/27/30 SUFP</td><td>0x1E1948B7eea9be0251562a532103eB81B019dCe7</td></tr><tr><td>XS2351465179</td><td>JETLN 1.625 06/10/26</td><td>0x04D9cF9f1F65f6dEa48EFa491a9B9CEc13C1196C</td></tr><tr><td>XS2356306642</td><td>CAIXAB 0 06/22/25</td><td>0x04d3b24f3c31f9a1bC1Bf698d82C5f171932dd2F</td></tr><tr><td>XS2436579978</td><td>GLBID 1.875 01/27/27</td><td>0xe3747f77E564dF87F73B76EefA59069130EF5615</td></tr><tr><td>NO0012828187</td><td>BORRNO 5 02/08/28</td><td>0xFdE2B8017813676d8E2D33ba1efF9A0eB4b901cf</td></tr><tr><td>US00971TAJ07</td><td>AKAM 0.125 05/01/25</td><td>0x5F32948CDb7E41eb5a28B9B69b2212E108360D96</td></tr><tr><td>US01609WBF86</td><td>BABA 0.5 06/01/31</td><td>0x55E51187037d8c68D6eb762CF04bb4A521760Dc0</td></tr><tr><td>XS2740429589</td><td>CPRIM 2.375 01/17/29</td><td>0xA8EE2340e60aB357292a94Ba43E6d720E0CD8C4b</td></tr><tr><td>XS2763018889</td><td>PHARM 4.5 04/25/29</td><td>0x8F86989f6420526C50BaF0b57637bCb35917E490</td></tr><tr><td>US23804LAB99</td><td>DDOG 0.125 06/15/25</td><td>0x6b999Ce945353b285A1B8Bf0433BF46Cf4A3b8CF</td></tr><tr><td>US23248VAB18</td><td>CYBR 0 11/15/24</td><td>0xf8E00f8bC62A63fF0eb547Fd206d0c6eeA049Ab1</td></tr><tr><td>AT0000A2N7T2</td><td>DOCOTI 1.75 01/28/26</td><td>0xa7Ef8a1964383A1F50C10a9beAF7a6B7440e9332</td></tr><tr><td>CH0373476511</td><td>GLRNKB V2 PERP</td><td>0x61B0bC63A08D0610A15152dc4D47997e6fA7bF9B</td></tr><tr><td>CH0426820350</td><td>IDIASW 0.75 07/17/24</td><td>0x19A9f033b893E75dfD6250B14b07Bf01813a9bd6</td></tr><tr><td>DE000A11QHW7</td><td>ALNOGY 8 03/21/19 ANO</td><td>0xcb10057a4B351acE686bE7ec1889f4E1D5E4303C</td></tr><tr><td>US456837AF06</td><td>INTNED V6.5 PERP</td><td>0x000231ee119190C7b03B3528Cf153c065D71Fa3e</td></tr><tr><td>US404280DT33</td><td>HSBC V8 PERP</td><td>0xD26B1e989149d9EA6e1B2b63EA4f455Fde3E7122</td></tr><tr><td>US653656AB42</td><td>NICEIT 0 09/15/25</td><td>0x0Ae3dF9268593433AA48c43AD17E74ee9A6c5742</td></tr><tr><td>US759916AC34</td><td>RGEN 1 12/15/28</td><td>0x8A360aAFffAb66C8d9bf338a6B31fe6211502044</td></tr><tr><td>US844741BG22</td><td>LUV 1.25 05/01/25</td><td>0x822589508D7DeB3E061968a87b95192DD82f079B</td></tr><tr><td>US842587DP95</td><td>SO 3.875 12/15/25</td><td>0x9Ab38ffAfF2Aa7c159c92c496241ee5b66d41f5F</td></tr><tr><td>US852234AF05</td><td>SQ 0.125 03/01/25</td><td>0x75F205974159A91cf1FBA34CCC9C194963776647</td></tr><tr><td>US91680MAE75</td><td>UPST 1 11/15/30</td><td>0xe86cfDF69ca13EFAAe84D7be30Af7c21F31C3417</td></tr><tr><td>US91332UAB70</td><td>U 0 11/15/26</td><td>0xE9F26263234F9833FaE1614cdfB83A1Ab8e8A934</td></tr><tr><td>US92939UAQ94</td><td>WEC 4.375 06/01/29</td><td>0xEf12381d92520Cf812FCad6fEde9Cb9B181f3Ea6</td></tr><tr><td>FR0014003YP6</td><td>EDENFP 0 06/14/28 EDEN</td><td>0xd73A5270c32cd2388d4a9abC34E718666E7D6E82</td></tr><tr><td>FR0013521085</td><td>ACFP 0.7 12/07/27</td><td>0xC0F32bD2cdCFC4621173CeC1aBC7942D29f0db96</td></tr><tr><td>FR0013526803</td><td>WLNFP 0 07/30/25</td><td>0xEFA5E006067BeA04279F22b76C9F9a0dDC3a57f5</td></tr><tr><td>FR0014000105</td><td>SOIFP 0 10/01/25 SOI</td><td>0x3d845B83AC26244A5396bFF7B1ec5f4dE3A0F058</td></tr><tr><td>FR0014002ZE9</td><td>NXIFP 0.875 04/19/28</td><td>0xCfe20C5F987638DB199249aB5931c929a4E0C456</td></tr><tr><td>FR001400MA32</td><td>UBIFP 2.875 12/05/31</td><td>0x5797Fd0FA69437B999DD2941B59c083b1FefB60d</td></tr><tr><td>USG84228EV68</td><td>STANLN V4.3 PERP REGS</td><td>0x8ED36887b28F2e7e8C3A68FFBb6B042407c7D4f8</td></tr><tr><td>US88162GAB95</td><td>TTEK 2.25 08/15/28</td><td>0x9dBc4ab1652Aa617f185E4e3F25Be350Cc0c3f83</td></tr><tr><td>FR001400NF10</td><td>ORPAR 2 02/07/31</td><td>0xB92457bd96Fa4E2e233d9d49a2f869C412F24ca0</td></tr><tr><td>USG84228GP72</td><td>STANLN V7.625 PERP REGS</td><td>0xd3de4891487167BA5A465060749ac4B1518c50ea</td></tr><tr><td>US038169AA62</td><td>APLD 2.75 06/01/30</td><td>0x4d9849acc00C33F2488b9E3f86e727Ebd18f1E50</td></tr><tr><td>US04351PAD33</td><td>ASND 2.25 04/01/28</td><td>0xf19937052F2951cAa69B45AC2FCd316C0A36CFF1</td></tr><tr><td>US10316TAC80</td><td>BOX 1.5 09/15/29</td><td>0xCEf588d5618506862c1236820002Cf7A5E4B406b</td></tr><tr><td>US10806XAD49</td><td>BBIO 2.25 02/01/29</td><td>0x0bef9ee04bd6b386117B082D0a09F396D1f20a8E</td></tr><tr><td>US163072AB71</td><td>CAKE 2 03/15/30</td><td>0xdcF63894C91d81cA33E88C80af20B01E74DE93C0</td></tr><tr><td>US20717MAB90</td><td>CFLT 0 01/15/27</td><td>0xE4fa2362Ff73E23412cfc72dE59D9E79a7B1725e</td></tr><tr><td>US194014AB28</td><td>ENOV 3.875 10/15/28</td><td>0x96e11aa9c5360Aca6F3aB44A86C823541B2e5763</td></tr><tr><td>US26210CAD65</td><td>DBX 0 03/01/28</td><td>0x89C7549Fe324dCAF96c26670405d4D66e5AcfF78</td></tr><tr><td>US225447AD33</td><td>WOLF 1.75 05/01/26</td><td>0x721cc5AEba7F8C5D619A34A680682CDB4cBD1eFC</td></tr><tr><td>US23804LAC72</td><td>DDOG 0 12/01/29</td><td>0xC27e3Ccc5Caaf946B7313A74e5BCC5516d161060</td></tr><tr><td>US29355AAH05</td><td>ENPH 0 03/01/26</td><td>0x84E97416322BCFd1c57A135229f5350CC81c34EE</td></tr><tr><td>US44332NAB29</td><td>HTHT 3 05/01/26</td><td>0x57863E5734EA150D41D95599601561513D442785</td></tr><tr><td>US30034WAD83</td><td>EVRG 4.5 12/15/27</td><td>0xe39c25E780699E1Fcb693c9C3Ef38caedFDc3F36</td></tr><tr><td>US30063PAE51</td><td>EXAS 1.75 04/15/31</td><td>0x9Da07161bB755308c925803a16847B035b133538</td></tr><tr><td>US337932AR81</td><td>FE 4 05/01/26</td><td>0x247e23f64F22bBd51C94c30D98FA82704Db699aE</td></tr><tr><td>US477143AQ40</td><td>JBLU 2.5 09/01/29</td><td>0xFb172Ee30633CD5500b7CBA9d2C8EC90dB799315</td></tr><tr><td>US45784PAK75</td><td>PODD 0.375 09/01/26</td><td>0x23896b695f0D17213B809D51575317277E8fdae9</td></tr><tr><td>XS2049810356</td><td>BACR V6.375 PERP</td><td>0x53634246C58d7b995aE9C988e500f5Caaa0867C1</td></tr><tr><td>US45867GAD34</td><td>IDCC 3.5 06/01/27</td><td>0xF6f964dF209A5E63A89daD25BD9D87aD58bD4e38</td></tr><tr><td>XS2010324585</td><td>DLNLN 1.5 06/12/25</td><td>0xe634D80c9F4dD5872362456D3C9BD4d439B2f219</td></tr><tr><td>US55024UAF66</td><td>LITE 0.5 06/15/28</td><td>0xC8106d1AC2CD19700F6A2a66aeE4Fe0d6FA7D0ab</td></tr><tr><td>US604749AB77</td><td>MIRM 4 05/01/29</td><td>0xe8DB5f60Acb93f2927Eba2E16a92098ee771fc6c</td></tr><tr><td>US62914VAF31</td><td>NIO 0.5 02/01/27</td><td>0x8504804e8F4A526150dba3588119bdD421B10F6e</td></tr><tr><td>XS2200501653</td><td>OUTOK 5 07/09/25</td><td>0xa9EC151D8801585De587CF9855e8322053330141</td></tr><tr><td>US67059NAJ72</td><td>NTNX 0.5 12/15/29</td><td>0x85Bdb1A4ec78aE4b1f729209195594dE6177d59A</td></tr><tr><td>US682189AS48</td><td>ON 0 05/01/27</td><td>0xbBFADa7f57b44f9A775f1E817d813C41f4813440</td></tr><tr><td>XS2286049338</td><td>KYOMAI 0 01/29/26</td><td>0x75c815FE5511bfab910db4cE18F9A1441Ca03Cf5</td></tr><tr><td>XS2211997155</td><td>STM 0 08/04/25 A</td><td>0x37BC3a1B2FD131DC595EF97bd423ccD83F9ed93d</td></tr><tr><td>US46267XAE85</td><td>IQ 4 12/15/26</td><td>0xd48f665954387B337C6182638C12296f74A571Bf</td></tr><tr><td>US86333MAA62</td><td>LRN 1.125 09/01/27</td><td>0x626FE37Fbd3c5C985d9cd0E67F878E2F718684B4</td></tr><tr><td>XS2319958208</td><td>BICOSS 2.875 03/19/26</td><td>0x92BCfe66fe214DD90D661A561F3D23f6735137e6</td></tr><tr><td>US88080TAB08</td><td>WULF 2.75 02/01/30</td><td>0x6D1fE5d925FEF3d38B810c9b2bEa455Bb2462CFd</td></tr><tr><td>XS2364281175</td><td>NVLVN 5.25 07/16/26</td><td>0x058d490757477a0Bf0bC1C983623B900B4BdcBF5</td></tr><tr><td>US88331LAA61</td><td>SKIN 1.25 10/01/26</td><td>0x1dFcf8986c568e2d6A2806De3D8023a0e844001c</td></tr><tr><td>XS2333569056</td><td>MEITUA 0 04/27/28</td><td>0x94711622CAb0b833eC0E8447E48e7B9fA2fD7085</td></tr><tr><td>XS2339232147</td><td>SMWHLN 1.625 05/07/26</td><td>0x58879e2Dd4450E77cc7e1E9cfd08Ed1DB1600Cb9</td></tr><tr><td>XS2354329190</td><td>BFITNA 1.5 06/17/28 BFIT</td><td>0x422EE28433Ab07e122f6e2ae116f1635d7d14097</td></tr><tr><td>US465741AN69</td><td>ITRI 0 03/15/26</td><td>0xc63b2D4531c7D338D28d5203B55b2964D604141E</td></tr><tr><td>XS2465773070</td><td>BESINA 1.875 04/06/29</td><td>0x57ef069CA266e1a585865fb7D772EDB19aF4c108</td></tr><tr><td>XS2487637527</td><td>DXSAU 3.5 11/24/27</td><td>0xfe0FB17E3906772CedE35e9D9aeD57c75e196E89</td></tr><tr><td>US977852AD45</td><td>WOLF 1.875 12/01/29</td><td>0xBE182ba546a2a247edcFB0BB9Cc80Fe233fCdaFC</td></tr><tr><td>US922280AC69</td><td>VRNS 1 09/15/29</td><td>0x09B2e7159963C78c4573A5C5bb66583377d021A6</td></tr><tr><td>XS2718145779</td><td>VMUKLN V11 PERP</td><td>0x9F2402e5E03EBC2172fA66CA14405234E5b71f04</td></tr><tr><td>XS2725834043</td><td>SGLSJ 4.25 11/28/28</td><td>0x127455169029619bf41c71832788a6f1c6067082</td></tr><tr><td>US94419LAP67</td><td>W 3.25 09/15/27</td><td>0xDdDc813EB2996A8337Ad9e32d5a8d977fCB3FFb2</td></tr><tr><td>US977852AB88</td><td>WOLF 0.25 02/15/28</td><td>0xeA75165f241A0440A550Faa6D5bf6ad2d9862762</td></tr><tr><td>XS2713344195</td><td>SPG 3.5 11/14/26</td><td>0x1475C4B6d584969552CfE42B171A5801cd52fe16</td></tr><tr><td>US94419LAR24</td><td>W 3.5 11/15/28</td><td>0xD5Be74D8bfc28968043682209404113a806325F5</td></tr><tr><td>US94419LAF85</td><td>W 1 08/15/26</td><td>0xFF6416552c36c0899C87d6Fb950F7A953A96Cfb6</td></tr><tr><td>USG01719AJ50</td><td>BABA 0.5 06/01/31 REGS</td><td>0x075ff3CcEd83cf84Bc2d91CAc656a3be46Ef53C5</td></tr><tr><td>XS3015248209</td><td>BIDU 0 03/12/32</td><td>0xE9B9BB1aBc53B69650a5a256c89e7e3Ff8bc46d8</td></tr><tr><td>XS2895510340</td><td>ASCLN 11 09/19/28</td><td>0xCb0ff4F89c1A8C58A989529B44E0804b3Ea94DD5</td></tr><tr><td>XS1711989928</td><td>FURNA 4.5 11/02/24</td><td>0x537F6e65463a9f0e4005d8417C54568d769a8dee</td></tr><tr><td>XS2974514999</td><td>DELINT 0 01/21/30</td><td>0xb1cFd7F7C2E3A5B6B0604d28318Ebb8c3d004b7C</td></tr><tr><td>AT000B116918</td><td>SWOHN 3.65 05/16/34 --</td><td>0xEea1E2Be748E2a4Cb79365B2E60Dd74E65EF239F</td></tr><tr><td>DE000A3E5KG2</td><td>TUIGR 5 04/16/28</td><td>0xEBf47c888F8DD8bDa8a635FdF7378DB20C8c958f</td></tr><tr><td>DE000A383JQ7</td><td>TUIGR 1.95 07/26/31</td><td>0xc1bcd83A2fd9Af952283132a77cf5Dc295dc6cC7</td></tr><tr><td>DE000A19W2L5</td><td>AMSSW 0 03/05/25 AMS</td><td>0xfA9D9947df5b9c04Ef946167cC8B70FD65A7c105</td></tr><tr><td>DE000A351P38</td><td>LLFOND 7 05/24/28</td><td>0xe12CA42a101981Bf75ca65c3d2A5b9138c10B15D</td></tr><tr><td>DE000A2YN7A3</td><td>SMEAG 7.75 05/01/25</td><td>0x2Ee7B118de86bf577c88232BfC0924b63a095f4f</td></tr><tr><td>DE000A30VPN9</td><td>RAGSTF 1.875 11/16/29</td><td>0x5f875909Aa6491be53EEE687ED2F5858532b1e9e</td></tr><tr><td>DE000A2YNQU1</td><td>JBGR 2 06/11/26</td><td>0x903f15DB612518FeFc7c7C2EdEAa192EF0137839</td></tr><tr><td>DE000A352B25</td><td>RAGSTF 2.25 11/28/30</td><td>0x15C4364E0BD935694ED5171aFFe24FEea689d444</td></tr><tr><td>DE000A3H3F75</td><td>BLUINV 5.5 02/26/26</td><td>0xa71DCaa437Ec1fc295376EA4f97690745D197393</td></tr><tr><td>DE000A3H2WP2</td><td>DEHEHO 0.875 07/15/25</td><td>0xf7c0C531f9a38Ec7EC9BD252F87573bF72ae76A9</td></tr><tr><td>DE000A383Q70</td><td>PFRDEN 7.5 10/22/29</td><td>0xBaC6b5c8c77107686ACFf59A5DdFA34734d99E20</td></tr><tr><td>DE000A3K81W7</td><td>SIENFI 5.625 09/14/25</td><td>0xdC7F17A04EF095f58C25e4909Ffc06dAD6b4513D</td></tr><tr><td>DE000A3MQE86</td><td>CAPGR V1.875 PERP</td><td>0xc69dB3d2080ED14b1b30D60347636676CF808CDd</td></tr><tr><td>DE000A4DFHK7</td><td>ANNGR 0 05/20/30 A</td><td>0xe30153Cf07630b09906824e15A4853f21466a5D1</td></tr><tr><td>DE000A4D9G75</td><td>RDCGR 1.75 04/16/32</td><td>0xeDF81EA351a1C4f37C5cA72cc5790f62b60a1B1A</td></tr><tr><td>XS2384606468</td><td>CMCOMN 2 09/09/26</td><td>0x5c5e93B33a8CE590c391a689426534827d6F7CB5</td></tr><tr><td>XS2546248373</td><td>SASOL 4.5 11/08/27</td><td>0xE444807825e1079EB4f07d64d9f0997C2b74E07B</td></tr><tr><td>XS2581976748</td><td>CHFOTN 2.5 01/31/31 REgS</td><td>0x76b0543488ec5Bed78b8c9E8FC155441722f5bd8</td></tr><tr><td>XS2597741102</td><td>CLNXSM 2.125 08/11/30 CLNX</td><td>0xc48691669534c52656B98Da6ce6128EeD78d5ce7</td></tr><tr><td>XS2591236315</td><td>BALDER 3.5 02/23/28</td><td>0x928899aBEA6FF12f72017cEf43D8ec2F77222557</td></tr><tr><td>XS2630795404</td><td>LAGFNC 3.5 06/08/28</td><td>0x36B77889A45c8C2A6D8B1EDAdB1B00cCAce31698</td></tr><tr><td>XS2708724096</td><td>SUNAC 0 09/30/28 REGS</td><td>0x5a1A45921AD9E3bcBA5cf8696B71922e09b2eaaf</td></tr><tr><td>XS2708723791</td><td>SUNAC 1 09/30/32 REGS</td><td>0x8C05949deE23C7c22482a1157AC35440E110A4e4</td></tr><tr><td>XS2872755959</td><td>OCDOLN 6.25 08/06/29</td><td>0x2b1d9025E3F5e3Cf02FD58532CA35220e5Fa3e15</td></tr><tr><td>US02081GAC69</td><td>ATEC 0.75 03/15/30</td><td>0x9c13D71d72765067a22fCCAb8f157e3c1fA86c81</td></tr><tr><td>US090043AE04</td><td>BILL 0 04/01/30</td><td>0x1A2c7515756a8A3B43AcD4bd052018B88b0f95b3</td></tr><tr><td>US433000AA43</td><td>HIMHER 0 05/15/30</td><td>0xbade6E8f5449f148e611AbfdAD947b7dC72CBE17</td></tr><tr><td>US05971KAQ22</td><td>SANTAN V9.625 PERP _</td><td>0xFe9015bF81e55F0C8Fc1fd03EC79F614B67179b4</td></tr><tr><td>US05971KAP49</td><td>SANTAN V9.625 PERP *</td><td>0x1aCed9bdFdECB6eAA38cF58803e6a4f723ca54C4</td></tr><tr><td>US08265TAD19</td><td>BSY 0.375 07/01/27</td><td>0x4F713Dc0c966FB84a487F2BE50bA544c4C950fc0</td></tr><tr><td>US06738EBX22</td><td>BACR V8 PERP</td><td>0x4f98eD91eF16C2933215D21582a18A0166b18C6F</td></tr><tr><td>XS1731596257</td><td>BESINA 0.5 12/06/24</td><td>0x47b7E90aF1EC865CA8C6C91034364F509f25EFfF</td></tr><tr><td>XS2112202101</td><td>SINBIO 0 02/17/25</td><td>0x8Fde99483fC1aB435D290e3D0e44751820E4bfa5</td></tr><tr><td>XS2154448059</td><td>AMSSM 1.5 04/09/25</td><td>0x967124DAa66b5d00D936F76153B68eff26AC3Ea7</td></tr><tr><td>XS2260025296</td><td>SIASP 1.625 12/03/25</td><td>0x6f6fAA1d1f9f46ff076Fb0F2a7B9c2c140eb2305</td></tr><tr><td>XS2211997239</td><td>STM 0 08/04/27 B</td><td>0x52a8bF7548C87653c44f1d1f5CbB0a05df60536b</td></tr><tr><td>XS2284240137</td><td>TRNLN 1 01/14/26</td><td>0x65A723F4f489B69970B64B843D824438c455bfA4</td></tr><tr><td>XS2317281710</td><td>HLSTWR 2.875 03/18/27</td><td>0xD0f08113b2D253a2256419bCaD6AF3aEd97Ea47A</td></tr><tr><td>XS2296021798</td><td>TKWYNA 0.625 02/09/28 B</td><td>0x3F110912467bBb978A7BAA58C81472C6f0647570</td></tr><tr><td>XS2376482423</td><td>POHANG 0 09/01/26</td><td>0xEB6185A3d1C793ea05170661bd67244EC78732c4</td></tr><tr><td>XS2470870366</td><td>JPM 0 04/29/25 DTE</td><td>0x7640C206fa06845f1746D080457922e62dC067A0</td></tr><tr><td>XS2581879207</td><td>CHFOTN 2.5 01/31/31 REGS</td><td>0x1980e2eFd9cc63bD9d0C7FBab55b5086e5425051</td></tr><tr><td>US06738EBN40</td><td>BACR V6.125 PERP</td><td>0x6e2bFc0cf52DC9a9616516870fEe639C38FE0015</td></tr><tr><td>US42703MAF05</td><td>HLF 4.25 06/15/28</td><td>0x7DfB98DA5932D49383B084C649c6C57fDA08CC19</td></tr><tr><td>AT000B116637</td><td>SWOHN 1 01/16/27 07</td><td>0xe8B26Dc334c0ba505af2d80d393f00402210a4a3</td></tr><tr><td>AT000B116710</td><td>SWOHN 1.5 06/06/29</td><td>0x2FD522481c3295b1828ADD427e92e772aD8C25bc</td></tr><tr><td>US456837AY94</td><td>INTNED V3.875 PERP</td><td>0xC2094eAc600f041a00c2b681858370E3975A64bF</td></tr><tr><td>FR0012017903</td><td>RALFP 3.4 02/28/32</td><td>0xfA9f62Bd6771A80f377F9a555BbB9DD9271D9767</td></tr><tr><td>FR001400DV38</td><td>UBIFP 2.375 11/15/28</td><td>0x174806d738E93e960A2b14717c52c0e7c25D404d</td></tr><tr><td>US55087PAC86</td><td>LYFT 0.625 03/01/29</td><td>0x409210695dB6FB7eA0A875B2Abe9aAA593E678F4</td></tr><tr><td>US60471AAA97</td><td>MIR 0.25 06/01/30</td><td>0xe742f1Cef476cF458515a7615946158fCF31C672</td></tr><tr><td>US50202MAB81</td><td>LI 0.25 05/01/28</td><td>0x37CAE9d0b6CCEB8438A310036366c8C54D361a60</td></tr><tr><td>US629377CG50</td><td>NRG 2.75 06/01/48</td><td>0x24aDFA49E29BcdDC325aeb0c7aE8c3451e3C5d82</td></tr><tr><td>US665531AJ80</td><td>NOG 3.625 04/15/29</td><td>0x4aC0EE0FEB3B686463bB3974C324Be069B14c591</td></tr><tr><td>US76954AAD54</td><td>RIVN 3.625 10/15/30</td><td>0x3131199bEe89977320bC4eBF49a491206a30427B</td></tr><tr><td>US76954AAB98</td><td>RIVN 4.625 03/15/29</td><td>0x93b587870EDd5b31284FB001D01d54Cf6E46Ee77</td></tr><tr><td>US803607AD25</td><td>SRPT 1.25 09/15/27</td><td>0xe610077f535ff8DfCedF7F4A0F0b091dD506d62f</td></tr><tr><td>US87157DAH26</td><td>SYNA 0.75 12/01/31</td><td>0xDDAa0F48bb086002805d45a44fbAD90F4fC58dba</td></tr><tr><td>US81141RAF73</td><td>SEALTD 2.375 12/01/25</td><td>0xc218700457333AC615b2eB9124acB91028AD317F</td></tr><tr><td>US87918AAF21</td><td>TDOC 1.25 06/01/27</td><td>0x0d31f7B6d9ad61b7C26B1E81d1EeA9A80918d99B</td></tr><tr><td>US48576UAA43</td><td>KPTI 3 10/15/25</td><td>0xB5F430320c302bC2D1fD8ee8a7D29ab155f75A5F</td></tr><tr><td>US62914VAK26</td><td>NIO 4.625 10/15/30</td><td>0xB01154B1344057D616b83A9ed95A633D26dd4655</td></tr><tr><td>US722304AC65</td><td>PDD 0 12/01/25</td><td>0x45e38e22833670d616ffBbb325d452F010AeF162</td></tr><tr><td>XS2248816493</td><td>VBIOTE 1 12/30/25</td><td>0xA0Ac10808A94dd266Ed32f49edFD7BD731ce4e4F</td></tr><tr><td>US83304AAH95</td><td>SNAP 0.125 03/01/28</td><td>0x74Bdbbe1D49a4062c231a8F0C77CcA21fbf573e9</td></tr><tr><td>CH0397642775</td><td>SPSNSW 0.325 01/16/25 SPSN</td><td>0x6c2F299c295AdDb32C619C4e0bBDefe03e95db10</td></tr><tr><td>US338307AD33</td><td>FIVN 0.5 06/01/25</td><td>0x97D0a48De8BdAfa2c60642D23145e8d427dF83e8</td></tr><tr><td>US343412AJ13</td><td>FLR 1.125 08/15/29</td><td>0x8b8645B2Eb7E5A9153CF51AcB87641ACf193cCF8</td></tr><tr><td>US40637HAF64</td><td>HALO 1 08/15/28</td><td>0x19b243364d956C4f045Aa4Ef6869D1EbBDb1E5ed</td></tr><tr><td>US456837AR44</td><td>INTNED V5.75 PERP</td><td>0x5B1b05bE8474B3136ebd0f70fe0990c1b591F9E5</td></tr><tr><td>CH1421969317</td><td>BAERVX V7.5 PERP</td><td>0x5314aB81A7fCD09EF32B4CE76627269d6fC189e4</td></tr><tr><td>US45826HAC34</td><td>ITGR 1.875 03/15/30</td><td>0x0Cc08C3324a50fC618a5e0A46A5F1E8A17205F29</td></tr><tr><td>DE000A14J1L9</td><td>DTKONG 1 01/30/25 DKGB</td><td>0xda421AFB14d4F6BcBDDDAE92c785B6185165E3f6</td></tr><tr><td>US501812AB77</td><td>LCII 1.125 05/15/26</td><td>0x56f4Fe8125C40809F3CaC557aef051a849C248c3</td></tr><tr><td>US531229AP75</td><td>LMCA 3.75 03/15/28</td><td>0x07eb8a63728D2b3e384F993a003503d8F67E84E5</td></tr><tr><td>US55024UAH23</td><td>LITE 1.5 12/15/29</td><td>0x1b6183029791619E3Bf79c030fE5780baC35f1c3</td></tr><tr><td>DE000A254Y92</td><td>DEHEHO 1 01/23/27</td><td>0xcee201a76020b9A7d77FfC700876F2b0ee17d563</td></tr><tr><td>US594972AR21</td><td>MSTR 0 12/01/29</td><td>0xD40A66179Adf0E42F38a2181540E0e17520ab464</td></tr><tr><td>US595017AU87</td><td>MCHP 0.125 11/15/24</td><td>0x4A6C88d63aa9A6D84361301f7fa7343E99fFc306</td></tr><tr><td>US596278AB74</td><td>MIDD 1 09/01/25</td><td>0x37c899F92D717AA48754dA3cE2BaF09964Fa3fDe</td></tr><tr><td>DE000A286BY3</td><td>AMAGRI 5 01/22/25</td><td>0x5a6cE9E9A0cA9FEa0f943792BBf3B810DAe8EDa4</td></tr><tr><td>DE000A286LP0</td><td>QGEN 0 12/17/27 QGEN</td><td>0x582E08B2c701ef29fc848095c9eA12EEb263Bc02</td></tr><tr><td>DE000A287RE9</td><td>RDCGR 0 01/21/28 SAE</td><td>0xE531160EDFc7dB78E80F18A7C45cD9B0E0585E4A</td></tr><tr><td>DE000A30V8T1</td><td>RHMGR 2.25 02/07/30 B</td><td>0x6980003AD23Ea2c0bd5fafDA9c1eB683a07A4937</td></tr><tr><td>DE000A30V885</td><td>LLFOND 6.5 02/21/27</td><td>0x7cAf2Ad17a15984c4204743081B7B9891866bcE9</td></tr><tr><td>DE000A289T23</td><td>LEGGR 0.4 06/30/28</td><td>0x73b66e4f87b7D61ADF8Fd99D4f9fc9848a083FB7</td></tr><tr><td>US682189AU93</td><td>ON 0.5 03/01/29</td><td>0xdE83586295C3273332b1eBC3A4ac65c4234E0259</td></tr><tr><td>US69553PAD24</td><td>PD 1.5 10/15/28 *</td><td>0xFaE3A156518f774d1366c122A54A90Ad3D06AdF8</td></tr><tr><td>DE000A383PU6</td><td>DBANGR 5.5 01/05/30</td><td>0xC4d43B650285f54e148f028006630ff288b9A1AE</td></tr><tr><td>DE000A30V8S3</td><td>RHMGR 1.875 02/07/28 A</td><td>0x5cae34DcFf5Ec4DEa8b233202424B9BADaf04f2e</td></tr><tr><td>DE000A351MA2</td><td>NDXGR 4.25 04/14/30</td><td>0x5ae4e816023aC3285e51FfCa61840A49361088B1</td></tr><tr><td>DE000A382293</td><td>BECHT 2 12/08/30</td><td>0xaf6E9e234aDa9e3aaf579ebC491BF27CCC535c64</td></tr><tr><td>US70614WAB63</td><td>PTON 0 02/15/26</td><td>0x8aFA3399Cf2f10fF4DFcb103673b40054EefE797</td></tr><tr><td>DE000A3E46Y9</td><td>TEGGR 0.625 08/27/26</td><td>0x769e88bB9f7Ad4404A09F65f2ac51E60A1669c46</td></tr><tr><td>DE000A3H2WQ0</td><td>DEHEHO 1.5 01/15/28</td><td>0xD9923AB3D1431d21274af837d885C463EFdD7dC0</td></tr><tr><td>DE000A3KMT51</td><td>GFGGR 1.25 03/15/28</td><td>0xB288dE125160027dAc807f8DE1F79bD3f607E587</td></tr><tr><td>US81180WBL46</td><td>STX 3.5 06/01/28</td><td>0x9B07D00766Bdb5eBb88b204d102ea915566C276a</td></tr><tr><td>US81141RAG56</td><td>SEALTD 0.25 09/15/26</td><td>0x1eab32f8a1A95d24c3907d48FBDb5c078035d0E6</td></tr><tr><td>DE000A4DFC57</td><td>TEGGR 0.625 03/11/31</td><td>0xD6812aFcF85bAa85E8491dEa910952915b23886b</td></tr><tr><td>US82509LAA52</td><td>SHOPCN 0.125 11/01/25</td><td>0xc12C6980A3b914434F609Ccf9FDEF73BD28057Aa</td></tr><tr><td>US833445AA70</td><td>SNOW 0 10/01/27</td><td>0x09886A2470081be166c95ceE64aF10FD1489bd8c</td></tr><tr><td>US83304AAJ51</td><td>SNAP 0.5 05/01/30</td><td>0x9066211fe52E40D2156c768684B1263150a8e8C6</td></tr><tr><td>US83304AAB26</td><td>SNAP 0.75 08/01/26</td><td>0x94f7A486A01A8B75Fd4aFfc2264B8a320807C06c</td></tr><tr><td>US83406FAC68</td><td>SOFI 1.25 03/15/29</td><td>0x801Ef3452FA90Da73409662F3CF18aD288cf7694</td></tr><tr><td>US86771WAC91</td><td>RUN 4 03/01/30</td><td>0x14Eecb197504f230125aA8c097B2cd1624803dF0</td></tr><tr><td>US88163VAE92</td><td>TEVA 0.25 02/01/26 C</td><td>0x088CE26027974CE843BbDBeAa1526cD0e4168AA3</td></tr><tr><td>US90353TAM27</td><td>UBER 0.875 12/01/28 2028</td><td>0x452905DF92a12635Ef27B5EEb3D20Fc1a69a0970</td></tr><tr><td>US90353TAJ97</td><td>UBER 0 12/15/25</td><td>0xC6E84317C706DAC0C1388d344662619D2427Ee19</td></tr><tr><td>US958102AT29</td><td>WDC 3 11/15/28</td><td>0x3f392Ee9f1Dc69118C50bd06d3AC1Cee8a6b8627</td></tr><tr><td>USG91458AE28</td><td>VNET 2.5 04/01/30</td><td>0x4E77E9Da798Dc4CCCda32c48102CCf0B385F01e1</td></tr><tr><td>USG84228EP90</td><td>STANLN V4.75 PERP REGS</td><td>0x64741EFb3cb6ec3C0d5CE5BAb492d49C0CfB8ca5</td></tr><tr><td>XS1759625491</td><td>POSEDF 0 02/01/25</td><td>0x94849340Bd8a49E312b7f984c93835bB6DbC16fa</td></tr><tr><td>XS1978209002</td><td>ABGSM 1.5 10/26/24 regs</td><td>0x1d9DfbB6c72f8532A57f8d98D0855b82e9fd5D45</td></tr><tr><td>XS2016141637</td><td>PHPLN 2.875 07/15/25</td><td>0xfE57094280d20B53387934412E2441A954b568Bb</td></tr><tr><td>XS2089160506</td><td>ANTSPL 0 02/05/25</td><td>0xa0dcEE67e64b46C2dd0Bd9D9D45050826a9BbF30</td></tr><tr><td>XS2166095146</td><td>TKWYNA 1.25 04/30/26</td><td>0xAF3880FD8F81F25284eD1dCec3b3C4Ec523DC37E</td></tr><tr><td>US00217DAA81</td><td>ASTS 4.25 03/01/32</td><td>0x3FC7B45fC2b70b88b228e63d15D8e318de1E7825</td></tr><tr><td>XS2211511949</td><td>BESINA 0.75 08/05/27</td><td>0xaBa56BD70Ac5986DF89d4Ee7b17EBB84b927D0c8</td></tr><tr><td>FR0013200995</td><td>RCOFP 0.125 09/07/26 RCO</td><td>0x378d6722856c043e5f5e73F93C618cd1487AE87F</td></tr><tr><td>XS2263652815</td><td>ADXSM 2.75 11/30/25 ..</td><td>0x99b41Dcb37528d22beE8265678f0D63E481FDF91</td></tr><tr><td>XS2284144339</td><td>HSPGCL 0 01/22/26</td><td>0x8F2703144bcCe303fa6ba7E9BB96F69fdE7eD738</td></tr><tr><td>XS2332692719</td><td>ASCLN 0.75 04/16/26</td><td>0x55B6F107e3112DcA0c201cf7fC372e844612b8F3</td></tr><tr><td>US90138VAB36</td><td>VNET 0 02/01/26</td><td>0x1221079cC635d3379B726061a9802f4AC58EFA26</td></tr><tr><td>XS2269112863</td><td>XIAOMI 0 12/17/27</td><td>0x96adB87Dbc55338bFB32573a586A9E6FfBfdCBfe</td></tr><tr><td>XS2388179603</td><td>BUPFIN V4 PERP</td><td>0x061839F608b6cED981e62fDb06e02B1B7FEd4088</td></tr><tr><td>XS2332809412</td><td>VICVN 3 04/20/26</td><td>0xfd9C8F4F8ef13685ec989EeB7149e1ba209ff657</td></tr><tr><td>AT0000A33R11</td><td>VOEAV 2.75 04/28/28</td><td>0xb761cAC32C55eaA813Ba245260Ef93BDa40FaAcC</td></tr><tr><td>XS3034368806</td><td>IBESM 1.5 03/27/30 IBE</td><td>0xc042d54C19D2433db0caA658f4096D432cFc169a</td></tr><tr><td>DE000A3L06J9</td><td>QGEN 2.5 09/10/31</td><td>0xB77A0e9af8bB0fC2d5b4720d2475355520e41D36</td></tr><tr><td>BE6327660591</td><td>GBLBBB 0 04/01/26</td><td>0x19fb627d71A8A7D1a1d80453Eaa849Fae395C3a4</td></tr><tr><td>BE0002592708</td><td>KBCBB V4.25 PERP</td><td>0xa7C2BDAee25adb2054fe317dB9F83F7CEc6A9393</td></tr><tr><td>FR0013321429</td><td>NXIFP 0.25 03/02/25</td><td>0xD91D6751379f093b59751f3Ad188A6C8f425d538</td></tr><tr><td>FR0013215415</td><td>RALFP 5.25 02/28/32 COFP</td><td>0x8E9a47359585155Ad37b63C8c72111f7ADE5A12b</td></tr><tr><td>US92939UAR77</td><td>WEC 4.375 06/01/29</td><td>0xC722a7405DC4c4f50D2e65780940C9B13ea7eA75</td></tr><tr><td>DE000A30V5R1</td><td>DEHEHO 3.25 02/21/30</td><td>0x0517970087b2c54f9e707461B5C84A0FF67f6AD4</td></tr><tr><td>DE000A2GSDH2</td><td>LEGGR 0.875 09/01/25 LEG</td><td>0x00fF83DA9dCE350D86Da6F826961dB9Ba78c830b</td></tr><tr><td>DE000A2G87D4</td><td>DHLGR 0.05 06/30/25 DPW</td><td>0xccE3d2caCA08a3D4E39A12d39b2eA79737477c61</td></tr><tr><td>DE000A2YPE76</td><td>MTXGR 0.05 03/18/27 MTX</td><td>0xBe7d6211aF271491609383b12762EF62C3e2c9B5</td></tr><tr><td>DE000A30VKB5</td><td>SGLGR 5.75 09/21/27 SGL</td><td>0x3F58d090F47f96C5D840aa692E4a26b8887E8192</td></tr><tr><td>DE000A351SD3</td><td>SGLGR 5.75 06/28/28</td><td>0xFabE47C0C66e9F54F610D0E964Be03A4A0c5fC95</td></tr><tr><td>DE000A3H2XR6</td><td>DUEGR 0.75 01/15/26 DUE</td><td>0x109E8988b2bb319421A6C3A38Ab24B7AD7db3931</td></tr><tr><td>DE000A3E5S26</td><td>NIINGR 4 05/31/26 NIIN</td><td>0x81762cf4DEf014a2786114Fe040E0c4DBce33FA4</td></tr><tr><td>DE000A3MP437</td><td>DEHEHO 2.125 03/10/29 B</td><td>0x8687d55415152038f0DCC489c2f499CA445BcC1B</td></tr><tr><td>DE000A3MP429</td><td>DEHEHO 1 04/30/26 A</td><td>0x83A3d768b8E07b7eC40d64c1923347A3101a4BB8</td></tr><tr><td>DE000A4DFHL5</td><td>ANNGR 0.875 05/20/32 B</td><td>0x0d40BdFe2Bc2dd5F113f5Dff3CB1E1A9fcE8a88A</td></tr><tr><td>FR0013418795</td><td>ORPFP 0.375 05/17/27</td><td>0xb74B5c1B1e2A3D659BCBE16bde7322Ce5B18f2a5</td></tr><tr><td>FR0013457942</td><td>ATOFP 0 11/06/24</td><td>0x1EB39a34DbC6C20AE0Bba73FC99b5b280FEa46FE</td></tr><tr><td>FR0014005AO4</td><td>CLARFP V1.875 PERP</td><td>0xc290C1011537A763e19E395f3880F5EEb5d2E9df</td></tr><tr><td>FR0014001WC2</td><td>BIGFP 1.125 02/19/26</td><td>0x0b4D2131269aBa77045F122287c9d0D9bDBAB06f</td></tr><tr><td>FR001400DU47</td><td>AFFP V6.5 PERP</td><td>0xF5f1cf19194668C506868a0f1B311ab4eA1d1919</td></tr><tr><td>FR001400CMS2</td><td>NEOEN 2.875 09/14/27 .</td><td>0xB03FA12c405653906D284702137A193c4AbE4a59</td></tr><tr><td>FR001400AFJ9</td><td>ELISGP 2.25 09/22/29</td><td>0xc7CeD28147690C38e35D411a23fDDA1b55665feB</td></tr><tr><td>FR001400F2K3</td><td>SPIEFP 2 01/17/28</td><td>0x0FB09fBA58946aC5F0D8c2061c6018A29D80ce59</td></tr><tr><td>IT0006769316</td><td>ENXFP 1.5 05/30/32</td><td>0x25b4f0Fd725783c9DaFe3891426f5EAC955d55b9</td></tr><tr><td>US02156BAF04</td><td>AYX 1 08/01/26</td><td>0x82f602F34294F872512f594295e8779cF1162eA7</td></tr><tr><td>US011642AC98</td><td>ALRM 2.25 06/01/29</td><td>0x4Ed1EE9E6Eb61b5F48588A70b9f21ebCa8E96F77</td></tr><tr><td>US00922RAD70</td><td>ATSG 3.875 08/15/29</td><td>0x44cd144A846fBD4d3fC9cFB67A007d2ec6541a82</td></tr><tr><td>US02043QAB32</td><td>ALNY 1 09/15/27</td><td>0xCab2878d51BA66ba152d337C6E5613e425833AaC</td></tr><tr><td>US02376RAF91</td><td>AAL 6.5 07/01/25</td><td>0x1a75575A3021D481b20e9358F4851aE1FcE10E86</td></tr><tr><td>US05464CAB72</td><td>AXON 0.5 12/15/27</td><td>0x48a887bE448b4CbC5ab654AB0E6e2d3927C4DF28</td></tr><tr><td>US05964HBH75</td><td>SANTAN V8 PERP</td><td>0x86eC21a88c146A62D1143B53Ac7Cc235523fB408</td></tr><tr><td>US09239BAE92</td><td>BL 1 06/01/29</td><td>0xa6dcf240C1132a51806Ee0d8CcaAB931bC3C94e4</td></tr><tr><td>US06738EDC66</td><td>BACR V7.625 PERP</td><td>0xbc650aeD7B213B14446E2b4A83E1cf99DFD86F57</td></tr><tr><td>US093712AL17</td><td>BE 3 06/01/29</td><td>0xA723Ec018A614AF80796aD5d42C3af0b954c64A5</td></tr><tr><td>US10806XAH52</td><td>BBIO 1.75 03/01/31</td><td>0xcA153Eb2A9a8BA8D7138048aab31a37B500804bA</td></tr><tr><td>US10806XAB82</td><td>BBIO 2.5 03/15/27</td><td>0xFFF1bC79Bb177696427Bf9701d19383B88C86a98</td></tr><tr><td>US12685JAE55</td><td>CABO 0 03/15/26</td><td>0x4FbA3c02bc7c0Bb63346C9df4B96DE508Ba46Ebf</td></tr><tr><td>US126349AH20</td><td>CSGS 3.875 09/15/28</td><td>0x6Dd68349B52a34EE783b280Bedd0aD85eDd4b45c</td></tr><tr><td>US207410AH48</td><td>CNMD 2.25 06/15/27</td><td>0x335D2819a7843556548514131FF097CBD1d69c4f</td></tr><tr><td>US21874AAC09</td><td>CORZ 3 09/01/29</td><td>0x5ceB7Ca763bD68bD975E4bd86768a2F3A251B96B</td></tr><tr><td>US23282WAC47</td><td>CYTK 3.5 07/01/27</td><td>0x74cd8c8824508C9dFe480Cd429032e77FE75AC10</td></tr><tr><td>US29786AAJ51</td><td>ETSY 0.125 10/01/26</td><td>0xd8717Da486e3f52E3cF32755795F9451D9CaD28b</td></tr><tr><td>US25402DAB82</td><td>DOCN 0 12/01/26</td><td>0x6f1386f24B316be0CB9fC293d1369b66c746B8ee</td></tr><tr><td>US30050BAG68</td><td>EVH 3.5 12/01/29</td><td>0xEF7f52f477aE83ab9e5fB9fb67b438888b35aA9F</td></tr><tr><td>US29355AAK34</td><td>ENPH 0 03/01/28</td><td>0xb670fCEa5DF680Df741BEC82D8915282f63fA6B2</td></tr><tr><td>US30034WAC01</td><td>EVRG 4.5 12/15/27</td><td>0xcc8Ff235fb2e2C69f2dfDB9AD2EceF85a23b81f4</td></tr><tr><td>US29786AAN63</td><td>ETSY 0.25 06/15/28</td><td>0x13F49D9eD838fae5ddb9cF7DdDF9DE04CE9a5085</td></tr><tr><td>US36467WAD11</td><td>GME 0 04/01/30</td><td>0x244FcB3fa053884b8411dc118e46fcb22932F324</td></tr><tr><td>US404280EJ42</td><td>HSBC V6.95 PERP</td><td>0x12cE0586FD8b4968B78775Cc0ae9542a70d67E8A</td></tr><tr><td>US456837AZ69</td><td>INTNED V4.25 PERP NC10</td><td>0x1438180ac5F3836727e64d64eaE261aE065C62F0</td></tr><tr><td>US58733RAD44</td><td>MELI 2 08/15/28</td><td>0x1970D99C4FBD2918F45802F2ECb8DFfd91e80624</td></tr><tr><td>US594972AK77</td><td>MSTR 0.875 03/15/31</td><td>0x1DA8D4E4D9c41D4b26CbaaC48fcfC1305f091261</td></tr><tr><td>US842587EC73</td><td>SO 3.25 06/15/28</td><td>0x7c58049775f39f6a8483Dc6285899944F07781bD</td></tr><tr><td>USG84228FJ22</td><td>STANLN V7.75 PERP REGs</td><td>0x85521D0B2c88225AA067711Baa441b22E78297Ce</td></tr><tr><td>BE6325746855</td><td>MITRAB 4.25 12/17/25</td><td>0xeCB607e9cE60991C39884436713c2Fe340d887D6</td></tr><tr><td>BE0933899800</td><td>FBAVP F PERP *</td><td>0xFF077f117F4b3226CeD94d118B589c7691CE1561</td></tr><tr><td>BE6322623669</td><td>UMIBB 0 06/23/25</td><td>0x7500fe1aa3219cb062d39A6dA0E7aF39574900eE</td></tr><tr><td>BE6317598850</td><td>AGSBB V3.875 PERP</td><td>0xb2F483f8e6741Da9999F0BD4b494aCAc671BedC1</td></tr><tr><td>NO0010867948</td><td>BWONO 2.5 11/12/24</td><td>0x3A0F05Df2e91FD40459346B36325D6681Fa5699c</td></tr><tr><td>US08862EAB56</td><td>BYND 0 03/15/27</td><td>0x395243eC99C8458c324f0C6e88aaf9Ca49d14587</td></tr><tr><td>US09857LAN82</td><td>BKNG 0.75 05/01/25</td><td>0x3C37491474644EcDe0b4B854805b5d816640d2d8</td></tr><tr><td>US08265TAB52</td><td>BSY 0.125 01/15/26</td><td>0x2bBCb7d540001Fd3939780Cf16E5Abb251476E03</td></tr><tr><td>US671044AE59</td><td>OSIS 2.25 08/01/29</td><td>0xe9Fcf81a23A304D53e027A63261dEc5Eb28d4B2b</td></tr><tr><td>US773122AA45</td><td>RKLB 4.25 02/01/29</td><td>0x56d735A35727C538EBdBa5Cd94B7731f06855e20</td></tr><tr><td>XS2127864622</td><td>ZJEXPC 0 01/20/26</td><td>0xA8F058Bb8cC7B531Ca927b8f51360D78B0BcEB6a</td></tr><tr><td>XS1793250041</td><td>SANTAN V4.75 PERP</td><td>0x026752D478A96213FFB4e28104C68FF614C2a128</td></tr><tr><td>US594972AN17</td><td>MSTR 2.25 06/15/32</td><td>0x0734772AC59704474Da73BBd5B892DD446DEebfB</td></tr><tr><td>US465741AQ90</td><td>ITRI 1.375 07/15/30</td><td>0xa5A8f60F620008A0f6B936f8D3B53E0c61536ad9</td></tr><tr><td>US70614WAD20</td><td>PTON 5.5 12/01/29</td><td>0x64979928f73E271638B7bD68af4bCF10f989c7F7</td></tr></tbody></table>

See [xft.finance/convertibles](https://xft.finance/convertibles) for full list of tokenized convertible bonds.


# Municipal Bonds

## Arbitrum Sepolia

<table><thead><tr><th width="153">Symbol</th><th width="199">Name</th><th width="380">Address</th></tr></thead><tbody><tr><td>US018802AD07</td><td>LNT 3.25 05/30/28</td><td>0x25A57BAcA8e2025b06684740D959FD5795562B4b</td></tr><tr><td>US40171VAB62</td><td>GWRE 1.25 11/01/29</td><td>0xD7565818615eD7af1c8c0429A8db1773273D05E0</td></tr><tr><td>US501812AC50</td><td>LCII 3 03/01/30</td><td>0x7dC88274fFEcA34B1edEB2CDa52C8ae697077887</td></tr><tr><td>US26210CAC82</td><td>DBX 0 03/01/26</td><td>0x1A775A4E6b06dF6325ACf6eab8FEf562Aa8bdF23</td></tr><tr><td>US60937PAD87</td><td>MDB 0.25 01/15/26</td><td>0xbcf4e319795B8fc5ba9644bd4824d7B65adA53bb</td></tr><tr><td>US55826TAB89</td><td>SPHR 3.5 12/01/28</td><td>0x9DbB788f266088e9f3f8053BDe2DB5593f32B164</td></tr><tr><td>US34379VAA17</td><td>FLNC 2.25 06/15/30</td><td>0x9d1FDaFC0a54200659C9BF2eb10A0fD3139Ba972</td></tr><tr><td>US450056AA40</td><td>IRTC 1.5 09/01/29</td><td>0x18876D5EAcfd50351a2C4B3DDAB6a592503c21b0</td></tr><tr><td>US594972AT86</td><td>MSTR 0 03/01/30</td><td>0x946665Caf4907CAaD409dFFf4956139E12C5ADFa</td></tr><tr><td>US595017AF11</td><td>MCHP 1.625 02/15/27</td><td>0xB4b804F532783446d660f42e002151A5cc0A497F</td></tr><tr><td>US842587DY03</td><td>SO 4.5 06/15/27</td><td>0xE3777f57d875750Dd4f7aD86dA8ABb2Df5690921</td></tr><tr><td>US91680MAC10</td><td>UPST 2 10/01/29</td><td>0x5cC523418844f271673aA15D803B756757f139cA</td></tr><tr><td>US21874AAE64</td><td>CORZ 0 06/15/31</td><td>0xDDeF34EB9a0BCA14e339A42B002736A0B43E89Ce</td></tr><tr><td>US679295AD75</td><td>OKTA 0.125 09/01/25</td><td>0x803409ab5c824B43204A55508f921a5fCE0E6655</td></tr><tr><td>US723484AJ01</td><td>PNW 4.75 06/15/27</td><td>0xB36Ff52D9B41422722856507A69C0618100Bc380</td></tr><tr><td>US01644JAA60</td><td>ALKTEC 1.5 03/15/30</td><td>0x106FA021eBAA8056Bb69169788fABb071E9A8FC7</td></tr><tr><td>US57164YAF43</td><td>VAC 3.25 12/15/27</td><td>0x3d2914e62E31906Ee5c641FAefed0f2c54174Fb4</td></tr><tr><td>US549498AC76</td><td>LCID 5 04/01/30</td><td>0x29e694aAd1567336b2DBF5893867cF63Cb832E2b</td></tr><tr><td>US767292AA33</td><td>RIOT 0.75 01/15/30</td><td>0xc2111Af3dB706808ab34C0a49f96036bd71050A2</td></tr><tr><td>US387328AF41</td><td>GVA 3.25 06/15/30</td><td>0x663628E53dc342357cE639749BDb821a388e6e48</td></tr><tr><td>US69349HAE71</td><td>TXNM 5.75 06/01/54</td><td>0x112722918dC3E38097a5C3ed4aB37aEaE41Ed86A</td></tr><tr><td>US00971TAN19</td><td>AKAM 1.125 02/15/29</td><td>0xe219d82E87FBfE7985e25695a0350B24ce2fECf6</td></tr><tr><td>US345370CZ16</td><td>F 0 03/15/26</td><td>0xd2544faf0Ed7646Db23868966D3e1A6Cb78B0Ed5</td></tr><tr><td>US338307AE16</td><td>FIVN 1 03/15/29</td><td>0x551E3b7b8AbF838B5D2bff0D7388eec887D6a175</td></tr><tr><td>US292554AP79</td><td>ECPG 4 03/15/29</td><td>0x3C9592648940b1830E307b13efA1e84B53995b95</td></tr><tr><td>US29786AAP12</td><td>ETSY 1 06/15/30</td><td>0x765e6A50387Fd8b5Da17FCee8E84F1A9926a1965</td></tr><tr><td>US30063PAD78</td><td>EXAS 2 03/01/30</td><td>0x100c1a4956F7Cb0dDB22BC55359E381Cfb3a27C9</td></tr><tr><td>US55303JAB26</td><td>MGPI 1.875 11/15/41</td><td>0xD2779d15EFf99358d32aA9b1FFE44b6F4eae1ac8</td></tr><tr><td>US09061GAK76</td><td>BMRN 1.25 05/15/27</td><td>0xb749AF7bBeCfd7007f97120Df0Facf6E726412Dd</td></tr><tr><td>US538034BB47</td><td>LYV 2.875 01/15/30</td><td>0x5550B1E7A03123550e82e2B8ba37566180d4d903</td></tr><tr><td>US59001ABE10</td><td>MTH 1.75 05/15/28</td><td>0x0be711c56ACB217E4C508ECF8Fef7BC4881A431a</td></tr><tr><td>US695127AJ95</td><td>PCRX 2.125 05/15/29</td><td>0x9174526003477DAe93263a8db1BBbC3D838b02A3</td></tr><tr><td>US565788AE61</td><td>MARA 0 03/01/30</td><td>0x7CF8613c3ebb6D9D57199fFBE110BAA4d8330A26</td></tr><tr><td>US500688AG18</td><td>KOS 3.125 03/15/30</td><td>0x951A3eeDa9aF7D41A48aA90a5d540B90163BC3BE</td></tr><tr><td>US538034BA63</td><td>LYV 3.125 01/15/29</td><td>0xA0Cff9129F74F525d4a50a3669bFF665fd2d9D5F</td></tr><tr><td>US55024UAD19</td><td>LITE 0.5 12/15/26</td><td>0xc8B15D35b2E9F45789AdE0855612a2c558c90E48</td></tr><tr><td>US67059NAH17</td><td>NTNX 0.25 10/01/27</td><td>0xD7357E3FA7f5A2AEC99CAe989a47c625cbE01E43</td></tr><tr><td>US55306NAA28</td><td>MKSI 1.25 06/01/30</td><td>0x4fAd8D80e954934964ED58D52D045494Af787e2F</td></tr><tr><td>US68213NAD12</td><td>OMCL 0.25 09/15/25</td><td>0x8788a6B6B5Ba969453f32604B85F51d241744D15</td></tr><tr><td>US65341BAG14</td><td>NEP 2.5 06/15/26</td><td>0xda47eB8395e42119c82ae3890e49B8FB4c190710</td></tr><tr><td>US594972AE18</td><td>MSTR 0 02/15/27</td><td>0xcb2d357e58c1A194a858DeFbBe64505DbF1344f9</td></tr><tr><td>US594972AM34</td><td>MSTR 2.25 06/15/32</td><td>0x876006e6886a4a205b1b5F79151f6037C3EDe250</td></tr><tr><td>US595017BF02</td><td>MCHP 0.75 06/01/30</td><td>0xEC7Ae454586e63F7ec9550c6E78aFDcDDD892ed8</td></tr><tr><td>US70202LAC63</td><td>PSN 2.625 03/01/29</td><td>0xfbb80444b4dc94dD5F98F3D1126E6622f1dD4FB4</td></tr><tr><td>US018802AC24</td><td>LNT 3.875 03/15/26</td><td>0x490AD550e1EEa3E081F5baCf64E519b38D7684b1</td></tr><tr><td>US70614WAC47</td><td>PTON 5.5 12/01/29</td><td>0xbe5CFd868128E614384591E0faf695670b08dc6C</td></tr><tr><td>US833445AC37</td><td>SNOW 0 10/01/29</td><td>0x1963b016dfA93a6504A8850689757A063c838deE</td></tr><tr><td>US92939UAP12</td><td>WEC 4.375 06/01/27</td><td>0x502Cd51d0adC8A62749B571A3d57f6661EFD6aB0</td></tr><tr><td>US98980GAB86</td><td>ZS 0.125 07/01/25</td><td>0x0c2d571e9Eea05EfD76298fcB23949D5130760b7</td></tr><tr><td>US125896BX77</td><td>CMS 3.375 05/01/28</td><td>0x918f711521A32748f982CaF5B3Ab6a284C4fFF0F</td></tr><tr><td>US91332UAG67</td><td>U 0 03/15/30</td><td>0xB072E1811e0e8704D42EF33e0566830b615756Cb</td></tr><tr><td>US92766KAA43</td><td>SPCE 2.5 02/01/27</td><td>0xd305430AB0965f1daC3a5BD765e6fbCc79277b6d</td></tr><tr><td>US98149GAB68</td><td>WKC 3.25 07/01/28</td><td>0x56207778d188317c215Fbf35C52761b2993B9970</td></tr><tr><td>US98139AAD72</td><td>WK 1.25 08/15/28</td><td>0x6e35bee9599fBd91FA12d1F0E863aFb538913CA4</td></tr><tr><td>US15643UAD63</td><td>LEU 2.25 11/01/30</td><td>0x3ee980CDDd180C1B68a5E6d3dF8698b402bd5604</td></tr><tr><td>US163086AE15</td><td>CHEF 2.375 12/15/28</td><td>0xa3E2A9356c6FA1AF09CaB3B270420C9689737E12</td></tr><tr><td>US358039AB12</td><td>FRPT 3 04/01/28</td><td>0x83E5f0f148991670068A17E031a534231E5b8255</td></tr><tr><td>US40637HAD17</td><td>HALO 0.25 03/01/27</td><td>0x770869230CecefeF9463122A5a0189D9ED64B5bc</td></tr><tr><td>US553368AC59</td><td>MPUS 3 03/01/30</td><td>0xA63bF1071d25De5cA4E00b1a396bF63A6DB9BdEd</td></tr><tr><td>US516544AB96</td><td>LNTH 2.625 12/15/27</td><td>0x454b719072d63Cca61837bd7B00B7E3278A97B70</td></tr><tr><td>US753422AH70</td><td>RPD 1.25 03/15/29</td><td>0x86Ea96D6f55a4fBF35798C01541c5C8a464C9fE7</td></tr><tr><td>US83304AAF30</td><td>SNAP 0 05/01/27</td><td>0x3B672fA81d2928dC20Dfb69b4122d8c81bec7977</td></tr><tr><td>US86745KAF12</td><td>NOVA 0.25 12/01/26</td><td>0x7c9eE18aaA0bfe8b323B904637F6eeC40f501D43</td></tr><tr><td>US86745KAH77</td><td>NOVA 2.625 02/15/28</td><td>0x4582c8c602a19B6993Df93cf18b0dCedD120D975</td></tr><tr><td>US902252AB17</td><td>TYL 0.25 03/15/26</td><td>0xC2eB83dA41ddAd3BF1361EdFFC9c3b21964434f1</td></tr><tr><td>US89377MAB54</td><td>TMDX 1.5 06/01/28</td><td>0x1A604D1feF4B00010105c2a3a5691676E745ddc8</td></tr><tr><td>US92939UAN63</td><td>WEC 4.375 06/01/27</td><td>0xdaF2eEa0b32C247Eddafad790eBB587c95E97fE9</td></tr><tr><td>US00971TAL52</td><td>AKAM 0.375 09/01/27</td><td>0xEebB003083D6a8AEbcA5bf3fd128fF925b45310b</td></tr><tr><td>US009066AB74</td><td>ABNB 0 03/15/26</td><td>0x4e604BE24cCad5E4d7420dFaf75bdDCd94a056B3</td></tr><tr><td>US007973AE02</td><td>AEIS 2.5 09/15/28</td><td>0x2A3815066D1CFf4897aE2F06ba8DF04afE1FB7e5</td></tr><tr><td>US011642AB16</td><td>ALRM 0 01/15/26</td><td>0x64cB0CA038Fe503f698f8E3DCb9F767b425C5B40</td></tr><tr><td>US974637AF75</td><td>WGO 3.25 01/15/30</td><td>0x0180bAd31bdF75B0BF60E75FE172e932FF4D3840</td></tr><tr><td>US04271TAB61</td><td>ARRY 1 12/01/28</td><td>0xA85B87daa7E0D1bCbdd82628499b1EF9Cc7bc4A2</td></tr><tr><td>US093712AK34</td><td>BE 3 06/01/28</td><td>0x4b43B6512A86B5fA699ecE973e2286e4DD5bd98F</td></tr><tr><td>US29415FAD69</td><td>NVST 1.75 08/15/28</td><td>0xFd972d33A233bb18De2dc9542c1D500C454Fd319</td></tr><tr><td>US25809KAA34</td><td>DASH 0 05/15/30</td><td>0xB1702BaF6d93a293f4Be8205fe5A05DCBedfbaff</td></tr><tr><td>US19260QAB32</td><td>COIN 0.5 06/01/26</td><td>0xC8266Db215F7DA2f781bCbDe4A3D8F5C852a80e0</td></tr><tr><td>US26142RAB06</td><td>DKNG 0 03/15/28</td><td>0x2450e519fd27F312259A1b3613AddA5eb6D5EaE6</td></tr><tr><td>US252131AM94</td><td>DXCM 0.375 05/15/28</td><td>0xE13c84443e13283C9E42deEDbc4A8D578cc7471C</td></tr><tr><td>US337932AS64</td><td>FE 3.625 01/15/29</td><td>0x3c97BFa21341E008be07d0CCA84FFBA65060f931</td></tr><tr><td>US29786AAL08</td><td>ETSY 0.125 09/01/27</td><td>0x9FE1101b25D9E6Dd650b1aD75DD366082f22F711</td></tr><tr><td>US30212PBE43</td><td>EXPE 0 02/15/26</td><td>0xBfC6D32179B82369390077C489Cf74a5fD60C30C</td></tr><tr><td>US30063PAB13</td><td>EXAS 0.375 03/15/27</td><td>0xD2B98eB8A39E7a4cD17Bd7889946bB1395281770</td></tr><tr><td>US337932AU11</td><td>FE 3.875 01/15/31</td><td>0x2717BD4777A6Ac73dc37F2AFf9d0E1e5908c9aFD</td></tr><tr><td>US387328AD92</td><td>GVA 3.75 05/15/28</td><td>0xDc090493aa94fB0669f08943658D7dA2FDe50BFB</td></tr><tr><td>US37940XAT90</td><td>GPN 1.5 03/01/31</td><td>0x5a0Ab2644593935D41B17bD29ce09d1B9C3B3c2c</td></tr><tr><td>US387328AE75</td><td>GVA 3.25 06/15/30</td><td>0x24A1DDd5f0E6955abC80Ff97E06e144a4bF5257B</td></tr><tr><td>US565788AG10</td><td>MARA 0 06/01/31</td><td>0xAf3092921C476043fC9DC7a82BACF99fc27FD3eB</td></tr><tr><td>US40131MAB54</td><td>GH 0 11/15/27</td><td>0xE1ABBcD76Eb20756cC9BedB4b1E71E3b0E80f037</td></tr><tr><td>US589889AA22</td><td>MMSI 3 02/01/29</td><td>0x32BACb2bE0f276cE1607d83faBE9580d7eaD95a9</td></tr><tr><td>US45826HAB50</td><td>ITGR 2.125 02/15/28</td><td>0x49ADC5371C3c4e18716B4257506B0d5dc7De2AE4</td></tr><tr><td>US462222AF72</td><td>IONS 1.75 06/15/28</td><td>0x0aAb86B98a3a6C3Bc7a4354F9a6a4E512eD57b3d</td></tr><tr><td>US45667GAG82</td><td>INFN 3.75 08/01/28</td><td>0x57A5FB07c7945EC9181Fe9Ec12330EB42bCdC3fB</td></tr><tr><td>US465741AP18</td><td>ITRI 1.375 07/15/30</td><td>0x74410084F4016C903F0bc51A429227dccFdc7C0c</td></tr><tr><td>US457985AM13</td><td>IART 0.5 08/15/25</td><td>0xb94202ca18aD8f53C628c4433Ea1ae94B1cd2486</td></tr><tr><td>US594972AH49</td><td>MSTR 0.625 03/15/30</td><td>0x52955351cbe0a5D1da9F8526d3d6a1Bc40F91365</td></tr><tr><td>US686688AB85</td><td>ORA 2.5 07/15/27</td><td>0x78691985876522f7D81b31e6d4dc6C2DC2Da7ce6</td></tr><tr><td>US70509VAA89</td><td>PEB 1.75 12/15/26</td><td>0xe8257eBA9d12dBE14FFF75ddDa0e62CE881dF8b1</td></tr><tr><td>US703343AG80</td><td>PATK 1.75 12/01/28</td><td>0xa367122d13AB5f6cf399F10BE24976a2BB3F1C9A</td></tr><tr><td>US737446AT14</td><td>POST 2.5 08/15/27</td><td>0x201e591Aea88adA2887bd913b0cacB683f1d9e33</td></tr><tr><td>XS2240512124</td><td>GBLBBB 0 12/29/23 G1A</td><td>0x924B8d6BA1e13Ae88E866082BF9210cba874d745</td></tr><tr><td>BE6339419812</td><td>GBLBBB 2.125 11/29/25</td><td>0x67Ce50B2078065fB28E62C965C2272222d68fac8</td></tr><tr><td>US62914VAJ52</td><td>NIO 3.875 10/15/29</td><td>0xB364C4F6Cc28D074A12c1669e78d925B46303bc8</td></tr><tr><td>US404280AS86</td><td>HSBC V6.375 PERP .</td><td>0x2A90652335FC7AaCb97A1EEb9c58204F020b4dfa</td></tr><tr><td>FR0013246147</td><td>ORPAR 0 06/20/24 RCO</td><td>0x2e239967A6ebAB1cdAc7D636679568C721A0903D</td></tr><tr><td>US83205YAD67</td><td>PENG 2 08/15/30</td><td>0xba5A5948C1eA7f7557d0314FEca27aC7e0c278d5</td></tr><tr><td>US56087FAC86</td><td>MMYT 0 07/01/30</td><td>0x016a9b4152353ef1f392EC6172361733a155Ff46</td></tr><tr><td>FR00140001X1</td><td>VLTSA 1 01/13/25</td><td>0x05D7a5b4633483A5AB8C0E1f102E6316b14CAb05</td></tr><tr><td>XS1961836712</td><td>COVBS V6.875 PERP</td><td>0x0f9ffC9DAf35a0e679b44E7C75A9Cd65B5F3615f</td></tr><tr><td>US98980AAB17</td><td>ZTO 1.5 09/01/27</td><td>0x2CE3E99d4a3C060126E0fF60A4287B9017897548</td></tr><tr><td>FR0013513041</td><td>SAFFP 0.875 05/15/27 SAF</td><td>0xEd87e3eb8a8f9E0906A9717A3B71cF903AFd505D</td></tr><tr><td>USQ08328AA64</td><td>ANZ V6.75 PERP REGS</td><td>0x547aB789c9a823E73B86532d0a316fdf46A602a2</td></tr><tr><td>FR0013489739</td><td>CLARFP 0.875 03/06/27</td><td>0xEbD24eeda2f87F0456388883dd987CE6578f7F42</td></tr><tr><td>XS1982682673</td><td>SCYRSM 3.75 04/25/24</td><td>0xE16a0204AA8AE1423551A8a96cC14dAd6397899D</td></tr><tr><td>XS2021212332</td><td>CLNXSM 0.5 07/05/28 CLNX</td><td>0x908963Be2baBcbC11623a8eb93f372976CD73F53</td></tr><tr><td>BE0002961424</td><td>KBCBB V8 PERP</td><td>0xa5A1f6699d0581b25DF1AE1fD4921E88CC15fD2e</td></tr><tr><td>DE000A1MA904</td><td>CEWGR 3.5 PERP</td><td>0xE260d28Ab5952B433fAdCfDb52572e7c050fd00E</td></tr><tr><td>DE000A3E4597</td><td>ZALGR 0.625 08/06/27 B</td><td>0x0B4458016674F5b0a15B2D7ab65f823e62feA312</td></tr><tr><td>BE0002651322</td><td>BCART 4 11/09/27</td><td>0x036afd1416184D3c830FE3d6BFa4263265Ea5492</td></tr><tr><td>BE0002638196</td><td>KBCBB V4.75 PERP</td><td>0x3373db5764DfB9f47C7Ac0cbe1c1BF773B0436Df</td></tr><tr><td>FR0014003Z32</td><td>SAFFP 0 04/01/28 SAF</td><td>0xd6C4254e1B9846d13826912a6FbB824396d9Be0d</td></tr><tr><td>CH0536893594</td><td>DOCMSW 2.75 03/31/25</td><td>0x6D308C3ecb5D647ed34D780557dFFBFA4B79eb9D</td></tr><tr><td>US05156XAG34</td><td>ACBCN 5.5 02/28/24</td><td>0xD5dA32Ae47Dd28f1f6d11DBA58E89365aac30d80</td></tr><tr><td>CH0486598227</td><td>CMBNSW 0 07/09/26</td><td>0x7F4AE31A4504b9D4eDa7F5eCc4c3c00B0Ef1F42e</td></tr><tr><td>XS2303829308</td><td>JPM 0 02/18/24</td><td>0x9FCB9615F92413F18f65198D7745D13324dbB404</td></tr><tr><td>XS2304902443</td><td>OZON 1.875 02/24/26</td><td>0xC222bC7A0ff4b44a8bA405dC194B1C034Eb4fa2e</td></tr><tr><td>DE000A254Y84</td><td>DEHEHO 0.25 01/23/24</td><td>0x49075552A69917D05FfeF78F10CBa9FC5abb6B06</td></tr><tr><td>DE000A289BQ3</td><td>LLFOND 5.5 07/17/24</td><td>0x8903c1DA530EBb40f3D4E91d71F02248731fDeB9</td></tr><tr><td>DE000A14J1K1</td><td>DTKONG 1.35 01/30/25 DKGA</td><td>0x8a0D22225D8a8790512879CC472C327ff81F4CBC</td></tr><tr><td>DE000A3H2UW2</td><td>BELMED 8.25 12/14/25</td><td>0x54Dbe0c7150fEDb48DE496E46513B939dcC28e78</td></tr><tr><td>DE000A13SHL2</td><td>SNSCGR 6.5 05/12/25</td><td>0x65878CC2A871e2E15A657AFEe24F08d1E922D54C</td></tr><tr><td>DE000A289DA3</td><td>HFGGR 0.75 05/13/25</td><td>0x999d8fDC035eA4a907c9095D6E52919047640B90</td></tr><tr><td>DE000A4DFSR9</td><td>FREGR 0 03/11/28</td><td>0x627D677b9E4E06359E91C168A16A2eE432Bc0B65</td></tr><tr><td>US02156BAD55</td><td>AYX 0.5 08/01/24</td><td>0xe036837615e0B40c89B2337cf9824ef6f8A94e06</td></tr><tr><td>US45667GAC78</td><td>INFN 2.125 09/01/24</td><td>0xB2E1B4957AFe6d447B68433f156F286A7621EFd2</td></tr><tr><td>US759916AB50</td><td>RGEN 0.375 07/15/24</td><td>0xbd39892689316CE86F50B8ae16665936d528f1F8</td></tr><tr><td>XS2275382286</td><td>WINSEM 0 01/14/26</td><td>0x6A0f41e613ec355590e697a74B1e4fb674B212E8</td></tr><tr><td>US89677QAA58</td><td>TCOM 0.75 06/15/29</td><td>0x95411c78966Be681414C17bfb72Ab489E3366eB3</td></tr><tr><td>XS1940192039</td><td>TKWYNA 2.25 01/25/24</td><td>0x9FDF2852Fc88aba941fAac8ba5B6744069C4491A</td></tr><tr><td>US958102AP07</td><td>WDC 1.5 02/01/24</td><td>0x43E3A5490F8025324EE331413A888Bf3E3b2f7cA</td></tr><tr><td>XS2126193379</td><td>YNDX 0.75 09/13/22</td><td>0xd526169A3c72DB711597347280c51e0053Bbb367</td></tr><tr><td>XS2105716554</td><td>PHARM 3 01/21/25</td><td>0xa99b11FA47ec816baEf07236bD50068766AC6C71</td></tr><tr><td>XS2308171383</td><td>AMXLMM 0 03/02/24</td><td>0xa97b9A9039A736993883D454A590589d786F1ec6</td></tr><tr><td>XS2342920050</td><td>MSCNTF 0 06/11/26</td><td>0x5a9AF2067df3a50b5F30f9Db190dA7cDCd2F8396</td></tr><tr><td>XS2352315571</td><td>JPM 0 06/10/24 MCFP</td><td>0x46870cDD60549E822a6B77DC63b4E3E5652C06E7</td></tr><tr><td>XS2388456456</td><td>MDLZ 0 09/20/24 MDLZ</td><td>0x87aF7A18bD53Ef632722305BA160f4D287f50167</td></tr><tr><td>DE000A3H2UK7</td><td>LHAGR 2 11/17/25 LHA</td><td>0x5d1712292a52C81552472aacd517b32B4A8Dfb80</td></tr><tr><td>XS1961891220</td><td>DXSAU 2.3 06/19/26</td><td>0x846669b5198b54cE3FB932eCDfFE78a146913478</td></tr><tr><td>US03765KAA25</td><td>TLRY 5.25 06/01/24</td><td>0x95E5ce97859875519Aa18D95617A08b861e70658</td></tr><tr><td>FR0013326204</td><td>CAFP 0 03/27/24</td><td>0x3C0A9C66D9d901e96133377B8F15ea2134fD361A</td></tr><tr><td>FR0013410628</td><td>AFFP 0.125 03/25/26</td><td>0x705DB9B4a94077245732D2b31637869383221202</td></tr><tr><td>FR0013444395</td><td>EDENFP 0 09/06/24 EDEN</td><td>0xC916a56b3205bFB1bdB4B0D673389Adb2110DB6A</td></tr><tr><td>FR0013448412</td><td>UBIFP 0 09/24/24 UBI</td><td>0x14041D26EdCF6D1FB89e85158E48c601B25aa094</td></tr><tr><td>NO0013219642</td><td>FRTBRA F 05/08/28 MAY</td><td>0xbF5e25064C0dc1188F85e09c5C0Ff10858580908</td></tr><tr><td>US09175RAB69</td><td>BTDR 5.25 12/01/29</td><td>0xA04227018c4e9f43EE1309EC4E245fc5Cb4ACc71</td></tr><tr><td>CH1105195684</td><td>DUFNSW 0.75 03/30/26</td><td>0xB63B5Eb269e2385493292e21f76eC1C287F4A77B</td></tr><tr><td>DE000A351ZH9</td><td>AAQGR 6 10/06/28</td><td>0x3828c68fc84b7aaf51C4A3BAA88F1307DCFD571a</td></tr><tr><td>DE000A283WZ3</td><td>AMSSW 2.125 11/03/27 .</td><td>0xA36E62c31c18397d56bB1D88F42bc63FFEB0e79c</td></tr><tr><td>DE000A30V8X3</td><td>PFRDEN 7.5 03/01/28</td><td>0xA0519D4688483811d8a4dca128e0648b30346a73</td></tr><tr><td>DE000A3E44N7</td><td>RAGSTF 0 06/17/26 EVK</td><td>0x3125F010e2495D80DD934BE940da4Ce09161EF4F</td></tr><tr><td>FR0013439304</td><td>WLNFP 0 07/30/26</td><td>0x73f67127D0B435Ad7F4391deC607c4e0DdF92a2c</td></tr><tr><td>FR0013515707</td><td>NEOEN 2 06/02/25</td><td>0xC32a148259A47EbA81792A14E2e541867D53a4E1</td></tr><tr><td>FR0014010NZ3</td><td>LRFP 1.5 06/23/33</td><td>0x4F174B543Ff85c8ebB5D05FD35F3048A5E9b4671</td></tr><tr><td>US05946KAG67</td><td>BBVASM V6.5 PERP 9</td><td>0xba2B6FFC9aA06a7F6B9CC75FbddEd60F4851FB7f</td></tr><tr><td>US47215PAH91</td><td>JD 0.25 06/01/29 144A</td><td>0xFD51bc8c9dD97AF6c29fC34fd479971b95B3df4c</td></tr><tr><td>US404280BL25</td><td>HSBC V6 PERP *</td><td>0xB20c26Bce6aea6E399Eef730912432C5eDAfa886</td></tr><tr><td>US404280EH85</td><td>HSBC V6.875 PERP ***</td><td>0xf7931FC1117b9A355493499E84b4e59F5B114723</td></tr><tr><td>US457669AB50</td><td>INSM 0.75 06/01/28</td><td>0x7013C184f1975bdEca19bEF5d531E7907a2A6AaF</td></tr><tr><td>DE000A2LQRA1</td><td>RAGSTF 0 10/02/24 EVK</td><td>0x90574925ae6C211ac6990aa243e2da58A65B2f44</td></tr><tr><td>DE000A3E5FE7</td><td>SOCHAI 5.75 04/07/24</td><td>0x731ec18bDdc62b7FBAc1E2a51D90e75dbc8A0149</td></tr><tr><td>US697435AF27</td><td>PANW 0.375 06/01/25</td><td>0x1E88A84b315C05311055Bb466EdCEb6F43459Fa3</td></tr><tr><td>US256163AD89</td><td>DOCU 0 01/15/24</td><td>0xE4E0E7169182BBaf3539d7Fc2BE5f3090A793b9E</td></tr><tr><td>US89677QAB32</td><td>TCOM 0.75 06/15/29</td><td>0x099a7A13F52cFD5C474E3Fe8F7689839B06ED27e</td></tr><tr><td>US853254BX70</td><td>STANLN V4.75 PERP 144A</td><td>0x60a27f5BE7B6c8fdf36f53866FAd589A10FC5012</td></tr><tr><td>USF1067PAG12</td><td>BNP V7.375 PERP REGs</td><td>0x1C20089E7d60838d3a10DD727812f58D997047DB</td></tr><tr><td>US090040AF30</td><td>BILI 0.5 12/01/26</td><td>0x8eFe29E4B63B2B26a4e3D5f4e38eEcf5F97b8436</td></tr><tr><td>US98986TAB44</td><td>ZNGA 0.25 06/01/24</td><td>0xb0d9e9C5A56a816A5F39ac29437cA29Cd3ec602B</td></tr><tr><td>US90184LAF94</td><td>TWTR 0.25 06/15/24</td><td>0xa579109594364EA9F763b8677625988fd79E0111</td></tr><tr><td>US98426TAF30</td><td>YY 1.375 06/15/26</td><td>0xB902D82BCfD53d842569d05fC77A32aE87354f76</td></tr><tr><td>US96122UAA25</td><td>WSTP V5 PERP</td><td>0xce026d8A9c35406A7D78cd27b798F45f6b573991</td></tr><tr><td>USG4939KAG16</td><td>IQ 4.625 03/15/30</td><td>0x18E542550f1b5a96556c72A41F0A44F49ddE1761</td></tr><tr><td>USG8208BAA91</td><td>JD 0.25 06/01/29 REGS</td><td>0x98acCeA16DaF1Cc2788Fbb699aB20d441750b81B</td></tr><tr><td>USG84228GE26</td><td>STANLN V7.875 PERP REGS</td><td>0xC8dE313eA3BC5B05a3254c4A2a3ad00eDEbA81dE</td></tr><tr><td>XS0147484074</td><td>AGSBB F PERP REGS</td><td>0x306b6780A95c732aB1b578E1C835151AcDDF98Aa</td></tr><tr><td>XS1964739715</td><td>VCTLUX 12.68 05/28/28</td><td>0x1D87FF75C40a859c0e0b92D112C803e5B6CA717b</td></tr><tr><td>US06738EBG98</td><td>BACR V8 PERP</td><td>0x608247EcaD85190ff3393b39D3834cD5FE9Aa425</td></tr><tr><td>XS2088760157</td><td>BATSJ 6.5 12/04/24</td><td>0xfAca98c9BDD15737A132476dDDe14249972b99E3</td></tr><tr><td>XS2190455811</td><td>OCDOLN 0.75 01/18/27</td><td>0x6c749077FECb28C385d07869986226ae336624d1</td></tr><tr><td>XS2239639433</td><td>VKCOLI 1.625 10/01/25 MAIL</td><td>0x79fcDCFe6F403A44ADB1A5CdFb9b51bd84a20114</td></tr><tr><td>XS2270378149</td><td>IWGLN 0.5 12/09/27</td><td>0x5683556Efc63171c63042d7aC111e4aF9a026A91</td></tr><tr><td>XS1799614232</td><td>GLENLN 0 03/27/25 GLEN</td><td>0x80be5eB379aE9CC4fA4ff7AB614270b98eC7a54e</td></tr><tr><td>XS2333568751</td><td>MEITUA 0 04/27/27</td><td>0xcAfA0B2f450Eb0380F352aCfca2dD825B9938742</td></tr><tr><td>XS2343113101</td><td>IAGLN 1.125 05/18/28 IAG</td><td>0xdF1ff5376F05d5C377C0Ec72397DeD5658E7FDB7</td></tr><tr><td>US53802LAB80</td><td>LIVN 2.5 03/15/29</td><td>0x567c63A756Ed9fA66bE91A738cc8aF65C6937F99</td></tr><tr><td>US539439AU36</td><td>LLOYDS V7.5 PERP</td><td>0x02a1bAd37E0e16a4a58A32Cf58020aC897297cC0</td></tr><tr><td>XS2576250448</td><td>BAC 0 01/30/26 TTE</td><td>0xDbd6843F73A6fec6e8513f71576052ecE1382bE2</td></tr><tr><td>US62914VAE65</td><td>NIO 0 02/01/26</td><td>0x8725CE610089FB06Df90cC57275374D63dcb9B5c</td></tr><tr><td>XS1933947951</td><td>GEELZ 0 06/19/24</td><td>0x97063258529a8Ac14f41ECc9e7Fb34DF0Fc1e462</td></tr><tr><td>XS1946847388</td><td>STOBLN 2.75 05/08/24</td><td>0x4685F7a4f3c22694Ea1fE32e6EFF7c67a65EF750</td></tr><tr><td>XS2541917105</td><td>CBGLN V11.125 PERP</td><td>0x7564f2dD3f478a5A1dD868C0Cd262D58B55B4562</td></tr><tr><td>XS2557565830</td><td>IBESM 0.8 12/07/27 IBE</td><td>0x4947E5CA21998636293ec12a780e6cb0E0f3CA47</td></tr><tr><td>DE000A254R42</td><td>GERRYW 3 12/31/23</td><td>0x80DBAf6E13D50BCC1038Bb9a199e374C81a921Ff</td></tr><tr><td>DE000A2DAHU1</td><td>FREGR 0 01/31/24 FREG</td><td>0xf72E622e1A44403B5EBfcb5075b7b20BEFFA0699</td></tr><tr><td>DE000A3H2XW6</td><td>MORGR 0.625 10/16/25 MOR</td><td>0x16E326aDDa61452b8d8aab683314Cc110Ea8ebCD</td></tr><tr><td>XS2264505566</td><td>JPM 0 12/28/23</td><td>0xF87641917e10768eB55FB9E681f49B31229b5954</td></tr><tr><td>XS2886113278</td><td>HONHAI 0 10/24/29</td><td>0x95413D20D132683A284aBe3f17aB466e3dCc9bC9</td></tr><tr><td>USF1067PAF39</td><td>BNP V8 PERP REGS</td><td>0x22451f96903C56E50FB42777eF51e777d75FE40F</td></tr><tr><td>US88160RAG65</td><td>TSLA 2 05/15/24</td><td>0x27BBa5b29cC43Ad5105cCeD9e0E3e604a351955C</td></tr><tr><td>CH0593093229</td><td>EFGBNK V5.5 PERP</td><td>0x8D5b297Ea4EDB84f218AFFa83dfc2F215C0485Bb</td></tr><tr><td>DE000A254NA6</td><td>PAGGR 7.5 12/09/24</td><td>0x3DAe7052a924720ffF2D0B612182e2d69eC6596F</td></tr><tr><td>DE000A3E4589</td><td>ZALGR 0.05 08/06/25 A</td><td>0x42c5Fc8B1761D15cdF264CA5fa420A9659304952</td></tr><tr><td>XS1908221507</td><td>QGEN 1 11/13/24</td><td>0xD2de180a6247b7Ee63596F6099D3C0Ce6ed700E4</td></tr><tr><td>XS2122174415</td><td>INTNED V4.875 PERP *</td><td>0xa6Cc95EaaE12a482EdF006D88eE30A063657AfA7</td></tr><tr><td>FR0013444148</td><td>VIEFP 0 01/01/25</td><td>0x0D4a4B00ebAd7A8b3A35ED1166dbd679593c4550</td></tr><tr><td>XS2090948279</td><td>OCDOLN 0.875 12/09/25</td><td>0xFf3bb609aa19a2d72AC5091e791Ebd7502743445</td></tr><tr><td>FR001400R1R6</td><td>SUFP 1.625 06/28/31 SUFP</td><td>0x9D045e9C402d57381Fa84Eb266C88235C8335D21</td></tr><tr><td>XS2257580857</td><td>CLNXSM 0.75 11/20/31 CLNX</td><td>0x32860f82e2c9D0B5fcb02EC093BaEDa8119965da</td></tr><tr><td>FR0014000OG2</td><td>SUFP 0 06/15/26</td><td>0x7D93Ba5B1Bb18A3E6E76BAeaAC6AFDBc6519912a</td></tr><tr><td>XS2296019891</td><td>TKWYNA 0 08/09/25 A</td><td>0x0Bb52b0c5c1C5e9105f9b5B9a8093eb8B730dD30</td></tr><tr><td>FR001400M9F9</td><td>SUFP 1.97 11/27/30 SUFP</td><td>0x1E1948B7eea9be0251562a532103eB81B019dCe7</td></tr><tr><td>XS2351465179</td><td>JETLN 1.625 06/10/26</td><td>0x04D9cF9f1F65f6dEa48EFa491a9B9CEc13C1196C</td></tr><tr><td>XS2356306642</td><td>CAIXAB 0 06/22/25</td><td>0x04d3b24f3c31f9a1bC1Bf698d82C5f171932dd2F</td></tr><tr><td>XS2436579978</td><td>GLBID 1.875 01/27/27</td><td>0xe3747f77E564dF87F73B76EefA59069130EF5615</td></tr><tr><td>NO0012828187</td><td>BORRNO 5 02/08/28</td><td>0xFdE2B8017813676d8E2D33ba1efF9A0eB4b901cf</td></tr><tr><td>US00971TAJ07</td><td>AKAM 0.125 05/01/25</td><td>0x5F32948CDb7E41eb5a28B9B69b2212E108360D96</td></tr><tr><td>US01609WBF86</td><td>BABA 0.5 06/01/31</td><td>0x55E51187037d8c68D6eb762CF04bb4A521760Dc0</td></tr><tr><td>XS2740429589</td><td>CPRIM 2.375 01/17/29</td><td>0xA8EE2340e60aB357292a94Ba43E6d720E0CD8C4b</td></tr><tr><td>XS2763018889</td><td>PHARM 4.5 04/25/29</td><td>0x8F86989f6420526C50BaF0b57637bCb35917E490</td></tr><tr><td>US23804LAB99</td><td>DDOG 0.125 06/15/25</td><td>0x6b999Ce945353b285A1B8Bf0433BF46Cf4A3b8CF</td></tr><tr><td>US23248VAB18</td><td>CYBR 0 11/15/24</td><td>0xf8E00f8bC62A63fF0eb547Fd206d0c6eeA049Ab1</td></tr><tr><td>AT0000A2N7T2</td><td>DOCOTI 1.75 01/28/26</td><td>0xa7Ef8a1964383A1F50C10a9beAF7a6B7440e9332</td></tr><tr><td>CH0373476511</td><td>GLRNKB V2 PERP</td><td>0x61B0bC63A08D0610A15152dc4D47997e6fA7bF9B</td></tr><tr><td>CH0426820350</td><td>IDIASW 0.75 07/17/24</td><td>0x19A9f033b893E75dfD6250B14b07Bf01813a9bd6</td></tr><tr><td>DE000A11QHW7</td><td>ALNOGY 8 03/21/19 ANO</td><td>0xcb10057a4B351acE686bE7ec1889f4E1D5E4303C</td></tr><tr><td>US456837AF06</td><td>INTNED V6.5 PERP</td><td>0x000231ee119190C7b03B3528Cf153c065D71Fa3e</td></tr><tr><td>US404280DT33</td><td>HSBC V8 PERP</td><td>0xD26B1e989149d9EA6e1B2b63EA4f455Fde3E7122</td></tr><tr><td>US653656AB42</td><td>NICEIT 0 09/15/25</td><td>0x0Ae3dF9268593433AA48c43AD17E74ee9A6c5742</td></tr><tr><td>US759916AC34</td><td>RGEN 1 12/15/28</td><td>0x8A360aAFffAb66C8d9bf338a6B31fe6211502044</td></tr><tr><td>US844741BG22</td><td>LUV 1.25 05/01/25</td><td>0x822589508D7DeB3E061968a87b95192DD82f079B</td></tr><tr><td>US842587DP95</td><td>SO 3.875 12/15/25</td><td>0x9Ab38ffAfF2Aa7c159c92c496241ee5b66d41f5F</td></tr><tr><td>US852234AF05</td><td>SQ 0.125 03/01/25</td><td>0x75F205974159A91cf1FBA34CCC9C194963776647</td></tr><tr><td>US91680MAE75</td><td>UPST 1 11/15/30</td><td>0xe86cfDF69ca13EFAAe84D7be30Af7c21F31C3417</td></tr><tr><td>US91332UAB70</td><td>U 0 11/15/26</td><td>0xE9F26263234F9833FaE1614cdfB83A1Ab8e8A934</td></tr><tr><td>US92939UAQ94</td><td>WEC 4.375 06/01/29</td><td>0xEf12381d92520Cf812FCad6fEde9Cb9B181f3Ea6</td></tr><tr><td>FR0014003YP6</td><td>EDENFP 0 06/14/28 EDEN</td><td>0xd73A5270c32cd2388d4a9abC34E718666E7D6E82</td></tr><tr><td>FR0013521085</td><td>ACFP 0.7 12/07/27</td><td>0xC0F32bD2cdCFC4621173CeC1aBC7942D29f0db96</td></tr><tr><td>FR0013526803</td><td>WLNFP 0 07/30/25</td><td>0xEFA5E006067BeA04279F22b76C9F9a0dDC3a57f5</td></tr><tr><td>FR0014000105</td><td>SOIFP 0 10/01/25 SOI</td><td>0x3d845B83AC26244A5396bFF7B1ec5f4dE3A0F058</td></tr><tr><td>FR0014002ZE9</td><td>NXIFP 0.875 04/19/28</td><td>0xCfe20C5F987638DB199249aB5931c929a4E0C456</td></tr><tr><td>FR001400MA32</td><td>UBIFP 2.875 12/05/31</td><td>0x5797Fd0FA69437B999DD2941B59c083b1FefB60d</td></tr><tr><td>USG84228EV68</td><td>STANLN V4.3 PERP REGS</td><td>0x8ED36887b28F2e7e8C3A68FFBb6B042407c7D4f8</td></tr><tr><td>US88162GAB95</td><td>TTEK 2.25 08/15/28</td><td>0x9dBc4ab1652Aa617f185E4e3F25Be350Cc0c3f83</td></tr><tr><td>FR001400NF10</td><td>ORPAR 2 02/07/31</td><td>0xB92457bd96Fa4E2e233d9d49a2f869C412F24ca0</td></tr><tr><td>USG84228GP72</td><td>STANLN V7.625 PERP REGS</td><td>0xd3de4891487167BA5A465060749ac4B1518c50ea</td></tr><tr><td>US038169AA62</td><td>APLD 2.75 06/01/30</td><td>0x4d9849acc00C33F2488b9E3f86e727Ebd18f1E50</td></tr><tr><td>US04351PAD33</td><td>ASND 2.25 04/01/28</td><td>0xf19937052F2951cAa69B45AC2FCd316C0A36CFF1</td></tr><tr><td>US10316TAC80</td><td>BOX 1.5 09/15/29</td><td>0xCEf588d5618506862c1236820002Cf7A5E4B406b</td></tr><tr><td>US10806XAD49</td><td>BBIO 2.25 02/01/29</td><td>0x0bef9ee04bd6b386117B082D0a09F396D1f20a8E</td></tr><tr><td>US163072AB71</td><td>CAKE 2 03/15/30</td><td>0xdcF63894C91d81cA33E88C80af20B01E74DE93C0</td></tr><tr><td>US20717MAB90</td><td>CFLT 0 01/15/27</td><td>0xE4fa2362Ff73E23412cfc72dE59D9E79a7B1725e</td></tr><tr><td>US194014AB28</td><td>ENOV 3.875 10/15/28</td><td>0x96e11aa9c5360Aca6F3aB44A86C823541B2e5763</td></tr><tr><td>US26210CAD65</td><td>DBX 0 03/01/28</td><td>0x89C7549Fe324dCAF96c26670405d4D66e5AcfF78</td></tr><tr><td>US225447AD33</td><td>WOLF 1.75 05/01/26</td><td>0x721cc5AEba7F8C5D619A34A680682CDB4cBD1eFC</td></tr><tr><td>US23804LAC72</td><td>DDOG 0 12/01/29</td><td>0xC27e3Ccc5Caaf946B7313A74e5BCC5516d161060</td></tr><tr><td>US29355AAH05</td><td>ENPH 0 03/01/26</td><td>0x84E97416322BCFd1c57A135229f5350CC81c34EE</td></tr><tr><td>US44332NAB29</td><td>HTHT 3 05/01/26</td><td>0x57863E5734EA150D41D95599601561513D442785</td></tr><tr><td>US30034WAD83</td><td>EVRG 4.5 12/15/27</td><td>0xe39c25E780699E1Fcb693c9C3Ef38caedFDc3F36</td></tr><tr><td>US30063PAE51</td><td>EXAS 1.75 04/15/31</td><td>0x9Da07161bB755308c925803a16847B035b133538</td></tr><tr><td>US337932AR81</td><td>FE 4 05/01/26</td><td>0x247e23f64F22bBd51C94c30D98FA82704Db699aE</td></tr><tr><td>US477143AQ40</td><td>JBLU 2.5 09/01/29</td><td>0xFb172Ee30633CD5500b7CBA9d2C8EC90dB799315</td></tr><tr><td>US45784PAK75</td><td>PODD 0.375 09/01/26</td><td>0x23896b695f0D17213B809D51575317277E8fdae9</td></tr><tr><td>XS2049810356</td><td>BACR V6.375 PERP</td><td>0x53634246C58d7b995aE9C988e500f5Caaa0867C1</td></tr><tr><td>US45867GAD34</td><td>IDCC 3.5 06/01/27</td><td>0xF6f964dF209A5E63A89daD25BD9D87aD58bD4e38</td></tr><tr><td>XS2010324585</td><td>DLNLN 1.5 06/12/25</td><td>0xe634D80c9F4dD5872362456D3C9BD4d439B2f219</td></tr><tr><td>US55024UAF66</td><td>LITE 0.5 06/15/28</td><td>0xC8106d1AC2CD19700F6A2a66aeE4Fe0d6FA7D0ab</td></tr><tr><td>US604749AB77</td><td>MIRM 4 05/01/29</td><td>0xe8DB5f60Acb93f2927Eba2E16a92098ee771fc6c</td></tr><tr><td>US62914VAF31</td><td>NIO 0.5 02/01/27</td><td>0x8504804e8F4A526150dba3588119bdD421B10F6e</td></tr><tr><td>XS2200501653</td><td>OUTOK 5 07/09/25</td><td>0xa9EC151D8801585De587CF9855e8322053330141</td></tr><tr><td>US67059NAJ72</td><td>NTNX 0.5 12/15/29</td><td>0x85Bdb1A4ec78aE4b1f729209195594dE6177d59A</td></tr><tr><td>US682189AS48</td><td>ON 0 05/01/27</td><td>0xbBFADa7f57b44f9A775f1E817d813C41f4813440</td></tr><tr><td>XS2286049338</td><td>KYOMAI 0 01/29/26</td><td>0x75c815FE5511bfab910db4cE18F9A1441Ca03Cf5</td></tr><tr><td>XS2211997155</td><td>STM 0 08/04/25 A</td><td>0x37BC3a1B2FD131DC595EF97bd423ccD83F9ed93d</td></tr><tr><td>US46267XAE85</td><td>IQ 4 12/15/26</td><td>0xd48f665954387B337C6182638C12296f74A571Bf</td></tr><tr><td>US86333MAA62</td><td>LRN 1.125 09/01/27</td><td>0x626FE37Fbd3c5C985d9cd0E67F878E2F718684B4</td></tr><tr><td>XS2319958208</td><td>BICOSS 2.875 03/19/26</td><td>0x92BCfe66fe214DD90D661A561F3D23f6735137e6</td></tr><tr><td>US88080TAB08</td><td>WULF 2.75 02/01/30</td><td>0x6D1fE5d925FEF3d38B810c9b2bEa455Bb2462CFd</td></tr><tr><td>XS2364281175</td><td>NVLVN 5.25 07/16/26</td><td>0x058d490757477a0Bf0bC1C983623B900B4BdcBF5</td></tr><tr><td>US88331LAA61</td><td>SKIN 1.25 10/01/26</td><td>0x1dFcf8986c568e2d6A2806De3D8023a0e844001c</td></tr><tr><td>XS2333569056</td><td>MEITUA 0 04/27/28</td><td>0x94711622CAb0b833eC0E8447E48e7B9fA2fD7085</td></tr><tr><td>XS2339232147</td><td>SMWHLN 1.625 05/07/26</td><td>0x58879e2Dd4450E77cc7e1E9cfd08Ed1DB1600Cb9</td></tr><tr><td>XS2354329190</td><td>BFITNA 1.5 06/17/28 BFIT</td><td>0x422EE28433Ab07e122f6e2ae116f1635d7d14097</td></tr><tr><td>US465741AN69</td><td>ITRI 0 03/15/26</td><td>0xc63b2D4531c7D338D28d5203B55b2964D604141E</td></tr><tr><td>XS2465773070</td><td>BESINA 1.875 04/06/29</td><td>0x57ef069CA266e1a585865fb7D772EDB19aF4c108</td></tr><tr><td>XS2487637527</td><td>DXSAU 3.5 11/24/27</td><td>0xfe0FB17E3906772CedE35e9D9aeD57c75e196E89</td></tr><tr><td>US977852AD45</td><td>WOLF 1.875 12/01/29</td><td>0xBE182ba546a2a247edcFB0BB9Cc80Fe233fCdaFC</td></tr><tr><td>US922280AC69</td><td>VRNS 1 09/15/29</td><td>0x09B2e7159963C78c4573A5C5bb66583377d021A6</td></tr><tr><td>XS2718145779</td><td>VMUKLN V11 PERP</td><td>0x9F2402e5E03EBC2172fA66CA14405234E5b71f04</td></tr><tr><td>XS2725834043</td><td>SGLSJ 4.25 11/28/28</td><td>0x127455169029619bf41c71832788a6f1c6067082</td></tr><tr><td>US94419LAP67</td><td>W 3.25 09/15/27</td><td>0xDdDc813EB2996A8337Ad9e32d5a8d977fCB3FFb2</td></tr><tr><td>US977852AB88</td><td>WOLF 0.25 02/15/28</td><td>0xeA75165f241A0440A550Faa6D5bf6ad2d9862762</td></tr><tr><td>XS2713344195</td><td>SPG 3.5 11/14/26</td><td>0x1475C4B6d584969552CfE42B171A5801cd52fe16</td></tr><tr><td>US94419LAR24</td><td>W 3.5 11/15/28</td><td>0xD5Be74D8bfc28968043682209404113a806325F5</td></tr><tr><td>US94419LAF85</td><td>W 1 08/15/26</td><td>0xFF6416552c36c0899C87d6Fb950F7A953A96Cfb6</td></tr><tr><td>USG01719AJ50</td><td>BABA 0.5 06/01/31 REGS</td><td>0x075ff3CcEd83cf84Bc2d91CAc656a3be46Ef53C5</td></tr><tr><td>XS3015248209</td><td>BIDU 0 03/12/32</td><td>0xE9B9BB1aBc53B69650a5a256c89e7e3Ff8bc46d8</td></tr><tr><td>XS2895510340</td><td>ASCLN 11 09/19/28</td><td>0xCb0ff4F89c1A8C58A989529B44E0804b3Ea94DD5</td></tr><tr><td>XS1711989928</td><td>FURNA 4.5 11/02/24</td><td>0x537F6e65463a9f0e4005d8417C54568d769a8dee</td></tr><tr><td>XS2974514999</td><td>DELINT 0 01/21/30</td><td>0xb1cFd7F7C2E3A5B6B0604d28318Ebb8c3d004b7C</td></tr><tr><td>AT000B116918</td><td>SWOHN 3.65 05/16/34 --</td><td>0xEea1E2Be748E2a4Cb79365B2E60Dd74E65EF239F</td></tr><tr><td>DE000A3E5KG2</td><td>TUIGR 5 04/16/28</td><td>0xEBf47c888F8DD8bDa8a635FdF7378DB20C8c958f</td></tr><tr><td>DE000A383JQ7</td><td>TUIGR 1.95 07/26/31</td><td>0xc1bcd83A2fd9Af952283132a77cf5Dc295dc6cC7</td></tr><tr><td>DE000A19W2L5</td><td>AMSSW 0 03/05/25 AMS</td><td>0xfA9D9947df5b9c04Ef946167cC8B70FD65A7c105</td></tr><tr><td>DE000A351P38</td><td>LLFOND 7 05/24/28</td><td>0xe12CA42a101981Bf75ca65c3d2A5b9138c10B15D</td></tr><tr><td>DE000A2YN7A3</td><td>SMEAG 7.75 05/01/25</td><td>0x2Ee7B118de86bf577c88232BfC0924b63a095f4f</td></tr><tr><td>DE000A30VPN9</td><td>RAGSTF 1.875 11/16/29</td><td>0x5f875909Aa6491be53EEE687ED2F5858532b1e9e</td></tr><tr><td>DE000A2YNQU1</td><td>JBGR 2 06/11/26</td><td>0x903f15DB612518FeFc7c7C2EdEAa192EF0137839</td></tr><tr><td>DE000A352B25</td><td>RAGSTF 2.25 11/28/30</td><td>0x15C4364E0BD935694ED5171aFFe24FEea689d444</td></tr><tr><td>DE000A3H3F75</td><td>BLUINV 5.5 02/26/26</td><td>0xa71DCaa437Ec1fc295376EA4f97690745D197393</td></tr><tr><td>DE000A3H2WP2</td><td>DEHEHO 0.875 07/15/25</td><td>0xf7c0C531f9a38Ec7EC9BD252F87573bF72ae76A9</td></tr><tr><td>DE000A383Q70</td><td>PFRDEN 7.5 10/22/29</td><td>0xBaC6b5c8c77107686ACFf59A5DdFA34734d99E20</td></tr><tr><td>DE000A3K81W7</td><td>SIENFI 5.625 09/14/25</td><td>0xdC7F17A04EF095f58C25e4909Ffc06dAD6b4513D</td></tr><tr><td>DE000A3MQE86</td><td>CAPGR V1.875 PERP</td><td>0xc69dB3d2080ED14b1b30D60347636676CF808CDd</td></tr><tr><td>DE000A4DFHK7</td><td>ANNGR 0 05/20/30 A</td><td>0xe30153Cf07630b09906824e15A4853f21466a5D1</td></tr><tr><td>DE000A4D9G75</td><td>RDCGR 1.75 04/16/32</td><td>0xeDF81EA351a1C4f37C5cA72cc5790f62b60a1B1A</td></tr><tr><td>XS2384606468</td><td>CMCOMN 2 09/09/26</td><td>0x5c5e93B33a8CE590c391a689426534827d6F7CB5</td></tr><tr><td>XS2546248373</td><td>SASOL 4.5 11/08/27</td><td>0xE444807825e1079EB4f07d64d9f0997C2b74E07B</td></tr><tr><td>XS2581976748</td><td>CHFOTN 2.5 01/31/31 REgS</td><td>0x76b0543488ec5Bed78b8c9E8FC155441722f5bd8</td></tr><tr><td>XS2597741102</td><td>CLNXSM 2.125 08/11/30 CLNX</td><td>0xc48691669534c52656B98Da6ce6128EeD78d5ce7</td></tr><tr><td>XS2591236315</td><td>BALDER 3.5 02/23/28</td><td>0x928899aBEA6FF12f72017cEf43D8ec2F77222557</td></tr><tr><td>XS2630795404</td><td>LAGFNC 3.5 06/08/28</td><td>0x36B77889A45c8C2A6D8B1EDAdB1B00cCAce31698</td></tr><tr><td>XS2708724096</td><td>SUNAC 0 09/30/28 REGS</td><td>0x5a1A45921AD9E3bcBA5cf8696B71922e09b2eaaf</td></tr><tr><td>XS2708723791</td><td>SUNAC 1 09/30/32 REGS</td><td>0x8C05949deE23C7c22482a1157AC35440E110A4e4</td></tr><tr><td>XS2872755959</td><td>OCDOLN 6.25 08/06/29</td><td>0x2b1d9025E3F5e3Cf02FD58532CA35220e5Fa3e15</td></tr><tr><td>US02081GAC69</td><td>ATEC 0.75 03/15/30</td><td>0x9c13D71d72765067a22fCCAb8f157e3c1fA86c81</td></tr><tr><td>US090043AE04</td><td>BILL 0 04/01/30</td><td>0x1A2c7515756a8A3B43AcD4bd052018B88b0f95b3</td></tr><tr><td>US433000AA43</td><td>HIMHER 0 05/15/30</td><td>0xbade6E8f5449f148e611AbfdAD947b7dC72CBE17</td></tr><tr><td>US05971KAQ22</td><td>SANTAN V9.625 PERP _</td><td>0xFe9015bF81e55F0C8Fc1fd03EC79F614B67179b4</td></tr><tr><td>US05971KAP49</td><td>SANTAN V9.625 PERP *</td><td>0x1aCed9bdFdECB6eAA38cF58803e6a4f723ca54C4</td></tr><tr><td>US08265TAD19</td><td>BSY 0.375 07/01/27</td><td>0x4F713Dc0c966FB84a487F2BE50bA544c4C950fc0</td></tr><tr><td>US06738EBX22</td><td>BACR V8 PERP</td><td>0x4f98eD91eF16C2933215D21582a18A0166b18C6F</td></tr><tr><td>XS1731596257</td><td>BESINA 0.5 12/06/24</td><td>0x47b7E90aF1EC865CA8C6C91034364F509f25EFfF</td></tr><tr><td>XS2112202101</td><td>SINBIO 0 02/17/25</td><td>0x8Fde99483fC1aB435D290e3D0e44751820E4bfa5</td></tr><tr><td>XS2154448059</td><td>AMSSM 1.5 04/09/25</td><td>0x967124DAa66b5d00D936F76153B68eff26AC3Ea7</td></tr><tr><td>XS2260025296</td><td>SIASP 1.625 12/03/25</td><td>0x6f6fAA1d1f9f46ff076Fb0F2a7B9c2c140eb2305</td></tr><tr><td>XS2211997239</td><td>STM 0 08/04/27 B</td><td>0x52a8bF7548C87653c44f1d1f5CbB0a05df60536b</td></tr><tr><td>XS2284240137</td><td>TRNLN 1 01/14/26</td><td>0x65A723F4f489B69970B64B843D824438c455bfA4</td></tr><tr><td>XS2317281710</td><td>HLSTWR 2.875 03/18/27</td><td>0xD0f08113b2D253a2256419bCaD6AF3aEd97Ea47A</td></tr><tr><td>XS2296021798</td><td>TKWYNA 0.625 02/09/28 B</td><td>0x3F110912467bBb978A7BAA58C81472C6f0647570</td></tr><tr><td>XS2376482423</td><td>POHANG 0 09/01/26</td><td>0xEB6185A3d1C793ea05170661bd67244EC78732c4</td></tr><tr><td>XS2470870366</td><td>JPM 0 04/29/25 DTE</td><td>0x7640C206fa06845f1746D080457922e62dC067A0</td></tr><tr><td>XS2581879207</td><td>CHFOTN 2.5 01/31/31 REGS</td><td>0x1980e2eFd9cc63bD9d0C7FBab55b5086e5425051</td></tr><tr><td>US06738EBN40</td><td>BACR V6.125 PERP</td><td>0x6e2bFc0cf52DC9a9616516870fEe639C38FE0015</td></tr><tr><td>US42703MAF05</td><td>HLF 4.25 06/15/28</td><td>0x7DfB98DA5932D49383B084C649c6C57fDA08CC19</td></tr><tr><td>AT000B116637</td><td>SWOHN 1 01/16/27 07</td><td>0xe8B26Dc334c0ba505af2d80d393f00402210a4a3</td></tr><tr><td>AT000B116710</td><td>SWOHN 1.5 06/06/29</td><td>0x2FD522481c3295b1828ADD427e92e772aD8C25bc</td></tr><tr><td>US456837AY94</td><td>INTNED V3.875 PERP</td><td>0xC2094eAc600f041a00c2b681858370E3975A64bF</td></tr><tr><td>FR0012017903</td><td>RALFP 3.4 02/28/32</td><td>0xfA9f62Bd6771A80f377F9a555BbB9DD9271D9767</td></tr><tr><td>FR001400DV38</td><td>UBIFP 2.375 11/15/28</td><td>0x174806d738E93e960A2b14717c52c0e7c25D404d</td></tr><tr><td>US55087PAC86</td><td>LYFT 0.625 03/01/29</td><td>0x409210695dB6FB7eA0A875B2Abe9aAA593E678F4</td></tr><tr><td>US60471AAA97</td><td>MIR 0.25 06/01/30</td><td>0xe742f1Cef476cF458515a7615946158fCF31C672</td></tr><tr><td>US50202MAB81</td><td>LI 0.25 05/01/28</td><td>0x37CAE9d0b6CCEB8438A310036366c8C54D361a60</td></tr><tr><td>US629377CG50</td><td>NRG 2.75 06/01/48</td><td>0x24aDFA49E29BcdDC325aeb0c7aE8c3451e3C5d82</td></tr><tr><td>US665531AJ80</td><td>NOG 3.625 04/15/29</td><td>0x4aC0EE0FEB3B686463bB3974C324Be069B14c591</td></tr><tr><td>US76954AAD54</td><td>RIVN 3.625 10/15/30</td><td>0x3131199bEe89977320bC4eBF49a491206a30427B</td></tr><tr><td>US76954AAB98</td><td>RIVN 4.625 03/15/29</td><td>0x93b587870EDd5b31284FB001D01d54Cf6E46Ee77</td></tr><tr><td>US803607AD25</td><td>SRPT 1.25 09/15/27</td><td>0xe610077f535ff8DfCedF7F4A0F0b091dD506d62f</td></tr><tr><td>US87157DAH26</td><td>SYNA 0.75 12/01/31</td><td>0xDDAa0F48bb086002805d45a44fbAD90F4fC58dba</td></tr><tr><td>US81141RAF73</td><td>SEALTD 2.375 12/01/25</td><td>0xc218700457333AC615b2eB9124acB91028AD317F</td></tr><tr><td>US87918AAF21</td><td>TDOC 1.25 06/01/27</td><td>0x0d31f7B6d9ad61b7C26B1E81d1EeA9A80918d99B</td></tr><tr><td>US48576UAA43</td><td>KPTI 3 10/15/25</td><td>0xB5F430320c302bC2D1fD8ee8a7D29ab155f75A5F</td></tr><tr><td>US62914VAK26</td><td>NIO 4.625 10/15/30</td><td>0xB01154B1344057D616b83A9ed95A633D26dd4655</td></tr><tr><td>US722304AC65</td><td>PDD 0 12/01/25</td><td>0x45e38e22833670d616ffBbb325d452F010AeF162</td></tr><tr><td>XS2248816493</td><td>VBIOTE 1 12/30/25</td><td>0xA0Ac10808A94dd266Ed32f49edFD7BD731ce4e4F</td></tr><tr><td>US83304AAH95</td><td>SNAP 0.125 03/01/28</td><td>0x74Bdbbe1D49a4062c231a8F0C77CcA21fbf573e9</td></tr><tr><td>CH0397642775</td><td>SPSNSW 0.325 01/16/25 SPSN</td><td>0x6c2F299c295AdDb32C619C4e0bBDefe03e95db10</td></tr><tr><td>US338307AD33</td><td>FIVN 0.5 06/01/25</td><td>0x97D0a48De8BdAfa2c60642D23145e8d427dF83e8</td></tr><tr><td>US343412AJ13</td><td>FLR 1.125 08/15/29</td><td>0x8b8645B2Eb7E5A9153CF51AcB87641ACf193cCF8</td></tr><tr><td>US40637HAF64</td><td>HALO 1 08/15/28</td><td>0x19b243364d956C4f045Aa4Ef6869D1EbBDb1E5ed</td></tr><tr><td>US456837AR44</td><td>INTNED V5.75 PERP</td><td>0x5B1b05bE8474B3136ebd0f70fe0990c1b591F9E5</td></tr><tr><td>CH1421969317</td><td>BAERVX V7.5 PERP</td><td>0x5314aB81A7fCD09EF32B4CE76627269d6fC189e4</td></tr><tr><td>US45826HAC34</td><td>ITGR 1.875 03/15/30</td><td>0x0Cc08C3324a50fC618a5e0A46A5F1E8A17205F29</td></tr><tr><td>DE000A14J1L9</td><td>DTKONG 1 01/30/25 DKGB</td><td>0xda421AFB14d4F6BcBDDDAE92c785B6185165E3f6</td></tr><tr><td>US501812AB77</td><td>LCII 1.125 05/15/26</td><td>0x56f4Fe8125C40809F3CaC557aef051a849C248c3</td></tr><tr><td>US531229AP75</td><td>LMCA 3.75 03/15/28</td><td>0x07eb8a63728D2b3e384F993a003503d8F67E84E5</td></tr><tr><td>US55024UAH23</td><td>LITE 1.5 12/15/29</td><td>0x1b6183029791619E3Bf79c030fE5780baC35f1c3</td></tr><tr><td>DE000A254Y92</td><td>DEHEHO 1 01/23/27</td><td>0xcee201a76020b9A7d77FfC700876F2b0ee17d563</td></tr><tr><td>US594972AR21</td><td>MSTR 0 12/01/29</td><td>0xD40A66179Adf0E42F38a2181540E0e17520ab464</td></tr><tr><td>US595017AU87</td><td>MCHP 0.125 11/15/24</td><td>0x4A6C88d63aa9A6D84361301f7fa7343E99fFc306</td></tr><tr><td>US596278AB74</td><td>MIDD 1 09/01/25</td><td>0x37c899F92D717AA48754dA3cE2BaF09964Fa3fDe</td></tr><tr><td>DE000A286BY3</td><td>AMAGRI 5 01/22/25</td><td>0x5a6cE9E9A0cA9FEa0f943792BBf3B810DAe8EDa4</td></tr><tr><td>DE000A286LP0</td><td>QGEN 0 12/17/27 QGEN</td><td>0x582E08B2c701ef29fc848095c9eA12EEb263Bc02</td></tr><tr><td>DE000A287RE9</td><td>RDCGR 0 01/21/28 SAE</td><td>0xE531160EDFc7dB78E80F18A7C45cD9B0E0585E4A</td></tr><tr><td>DE000A30V8T1</td><td>RHMGR 2.25 02/07/30 B</td><td>0x6980003AD23Ea2c0bd5fafDA9c1eB683a07A4937</td></tr><tr><td>DE000A30V885</td><td>LLFOND 6.5 02/21/27</td><td>0x7cAf2Ad17a15984c4204743081B7B9891866bcE9</td></tr><tr><td>DE000A289T23</td><td>LEGGR 0.4 06/30/28</td><td>0x73b66e4f87b7D61ADF8Fd99D4f9fc9848a083FB7</td></tr><tr><td>US682189AU93</td><td>ON 0.5 03/01/29</td><td>0xdE83586295C3273332b1eBC3A4ac65c4234E0259</td></tr><tr><td>US69553PAD24</td><td>PD 1.5 10/15/28 *</td><td>0xFaE3A156518f774d1366c122A54A90Ad3D06AdF8</td></tr><tr><td>DE000A383PU6</td><td>DBANGR 5.5 01/05/30</td><td>0xC4d43B650285f54e148f028006630ff288b9A1AE</td></tr><tr><td>DE000A30V8S3</td><td>RHMGR 1.875 02/07/28 A</td><td>0x5cae34DcFf5Ec4DEa8b233202424B9BADaf04f2e</td></tr><tr><td>DE000A351MA2</td><td>NDXGR 4.25 04/14/30</td><td>0x5ae4e816023aC3285e51FfCa61840A49361088B1</td></tr><tr><td>DE000A382293</td><td>BECHT 2 12/08/30</td><td>0xaf6E9e234aDa9e3aaf579ebC491BF27CCC535c64</td></tr><tr><td>US70614WAB63</td><td>PTON 0 02/15/26</td><td>0x8aFA3399Cf2f10fF4DFcb103673b40054EefE797</td></tr><tr><td>DE000A3E46Y9</td><td>TEGGR 0.625 08/27/26</td><td>0x769e88bB9f7Ad4404A09F65f2ac51E60A1669c46</td></tr><tr><td>DE000A3H2WQ0</td><td>DEHEHO 1.5 01/15/28</td><td>0xD9923AB3D1431d21274af837d885C463EFdD7dC0</td></tr><tr><td>DE000A3KMT51</td><td>GFGGR 1.25 03/15/28</td><td>0xB288dE125160027dAc807f8DE1F79bD3f607E587</td></tr><tr><td>US81180WBL46</td><td>STX 3.5 06/01/28</td><td>0x9B07D00766Bdb5eBb88b204d102ea915566C276a</td></tr><tr><td>US81141RAG56</td><td>SEALTD 0.25 09/15/26</td><td>0x1eab32f8a1A95d24c3907d48FBDb5c078035d0E6</td></tr><tr><td>DE000A4DFC57</td><td>TEGGR 0.625 03/11/31</td><td>0xD6812aFcF85bAa85E8491dEa910952915b23886b</td></tr><tr><td>US82509LAA52</td><td>SHOPCN 0.125 11/01/25</td><td>0xc12C6980A3b914434F609Ccf9FDEF73BD28057Aa</td></tr><tr><td>US833445AA70</td><td>SNOW 0 10/01/27</td><td>0x09886A2470081be166c95ceE64aF10FD1489bd8c</td></tr><tr><td>US83304AAJ51</td><td>SNAP 0.5 05/01/30</td><td>0x9066211fe52E40D2156c768684B1263150a8e8C6</td></tr><tr><td>US83304AAB26</td><td>SNAP 0.75 08/01/26</td><td>0x94f7A486A01A8B75Fd4aFfc2264B8a320807C06c</td></tr><tr><td>US83406FAC68</td><td>SOFI 1.25 03/15/29</td><td>0x801Ef3452FA90Da73409662F3CF18aD288cf7694</td></tr><tr><td>US86771WAC91</td><td>RUN 4 03/01/30</td><td>0x14Eecb197504f230125aA8c097B2cd1624803dF0</td></tr><tr><td>US88163VAE92</td><td>TEVA 0.25 02/01/26 C</td><td>0x088CE26027974CE843BbDBeAa1526cD0e4168AA3</td></tr><tr><td>US90353TAM27</td><td>UBER 0.875 12/01/28 2028</td><td>0x452905DF92a12635Ef27B5EEb3D20Fc1a69a0970</td></tr><tr><td>US90353TAJ97</td><td>UBER 0 12/15/25</td><td>0xC6E84317C706DAC0C1388d344662619D2427Ee19</td></tr><tr><td>US958102AT29</td><td>WDC 3 11/15/28</td><td>0x3f392Ee9f1Dc69118C50bd06d3AC1Cee8a6b8627</td></tr><tr><td>USG91458AE28</td><td>VNET 2.5 04/01/30</td><td>0x4E77E9Da798Dc4CCCda32c48102CCf0B385F01e1</td></tr><tr><td>USG84228EP90</td><td>STANLN V4.75 PERP REGS</td><td>0x64741EFb3cb6ec3C0d5CE5BAb492d49C0CfB8ca5</td></tr><tr><td>XS1759625491</td><td>POSEDF 0 02/01/25</td><td>0x94849340Bd8a49E312b7f984c93835bB6DbC16fa</td></tr><tr><td>XS1978209002</td><td>ABGSM 1.5 10/26/24 regs</td><td>0x1d9DfbB6c72f8532A57f8d98D0855b82e9fd5D45</td></tr><tr><td>XS2016141637</td><td>PHPLN 2.875 07/15/25</td><td>0xfE57094280d20B53387934412E2441A954b568Bb</td></tr><tr><td>XS2089160506</td><td>ANTSPL 0 02/05/25</td><td>0xa0dcEE67e64b46C2dd0Bd9D9D45050826a9BbF30</td></tr><tr><td>XS2166095146</td><td>TKWYNA 1.25 04/30/26</td><td>0xAF3880FD8F81F25284eD1dCec3b3C4Ec523DC37E</td></tr><tr><td>US00217DAA81</td><td>ASTS 4.25 03/01/32</td><td>0x3FC7B45fC2b70b88b228e63d15D8e318de1E7825</td></tr><tr><td>XS2211511949</td><td>BESINA 0.75 08/05/27</td><td>0xaBa56BD70Ac5986DF89d4Ee7b17EBB84b927D0c8</td></tr><tr><td>FR0013200995</td><td>RCOFP 0.125 09/07/26 RCO</td><td>0x378d6722856c043e5f5e73F93C618cd1487AE87F</td></tr><tr><td>XS2263652815</td><td>ADXSM 2.75 11/30/25 ..</td><td>0x99b41Dcb37528d22beE8265678f0D63E481FDF91</td></tr><tr><td>XS2284144339</td><td>HSPGCL 0 01/22/26</td><td>0x8F2703144bcCe303fa6ba7E9BB96F69fdE7eD738</td></tr><tr><td>XS2332692719</td><td>ASCLN 0.75 04/16/26</td><td>0x55B6F107e3112DcA0c201cf7fC372e844612b8F3</td></tr><tr><td>US90138VAB36</td><td>VNET 0 02/01/26</td><td>0x1221079cC635d3379B726061a9802f4AC58EFA26</td></tr><tr><td>XS2269112863</td><td>XIAOMI 0 12/17/27</td><td>0x96adB87Dbc55338bFB32573a586A9E6FfBfdCBfe</td></tr><tr><td>XS2388179603</td><td>BUPFIN V4 PERP</td><td>0x061839F608b6cED981e62fDb06e02B1B7FEd4088</td></tr><tr><td>XS2332809412</td><td>VICVN 3 04/20/26</td><td>0xfd9C8F4F8ef13685ec989EeB7149e1ba209ff657</td></tr><tr><td>AT0000A33R11</td><td>VOEAV 2.75 04/28/28</td><td>0xb761cAC32C55eaA813Ba245260Ef93BDa40FaAcC</td></tr><tr><td>XS3034368806</td><td>IBESM 1.5 03/27/30 IBE</td><td>0xc042d54C19D2433db0caA658f4096D432cFc169a</td></tr><tr><td>DE000A3L06J9</td><td>QGEN 2.5 09/10/31</td><td>0xB77A0e9af8bB0fC2d5b4720d2475355520e41D36</td></tr><tr><td>BE6327660591</td><td>GBLBBB 0 04/01/26</td><td>0x19fb627d71A8A7D1a1d80453Eaa849Fae395C3a4</td></tr><tr><td>BE0002592708</td><td>KBCBB V4.25 PERP</td><td>0xa7C2BDAee25adb2054fe317dB9F83F7CEc6A9393</td></tr><tr><td>FR0013321429</td><td>NXIFP 0.25 03/02/25</td><td>0xD91D6751379f093b59751f3Ad188A6C8f425d538</td></tr><tr><td>FR0013215415</td><td>RALFP 5.25 02/28/32 COFP</td><td>0x8E9a47359585155Ad37b63C8c72111f7ADE5A12b</td></tr><tr><td>US92939UAR77</td><td>WEC 4.375 06/01/29</td><td>0xC722a7405DC4c4f50D2e65780940C9B13ea7eA75</td></tr><tr><td>DE000A30V5R1</td><td>DEHEHO 3.25 02/21/30</td><td>0x0517970087b2c54f9e707461B5C84A0FF67f6AD4</td></tr><tr><td>DE000A2GSDH2</td><td>LEGGR 0.875 09/01/25 LEG</td><td>0x00fF83DA9dCE350D86Da6F826961dB9Ba78c830b</td></tr><tr><td>DE000A2G87D4</td><td>DHLGR 0.05 06/30/25 DPW</td><td>0xccE3d2caCA08a3D4E39A12d39b2eA79737477c61</td></tr><tr><td>DE000A2YPE76</td><td>MTXGR 0.05 03/18/27 MTX</td><td>0xBe7d6211aF271491609383b12762EF62C3e2c9B5</td></tr><tr><td>DE000A30VKB5</td><td>SGLGR 5.75 09/21/27 SGL</td><td>0x3F58d090F47f96C5D840aa692E4a26b8887E8192</td></tr><tr><td>DE000A351SD3</td><td>SGLGR 5.75 06/28/28</td><td>0xFabE47C0C66e9F54F610D0E964Be03A4A0c5fC95</td></tr><tr><td>DE000A3H2XR6</td><td>DUEGR 0.75 01/15/26 DUE</td><td>0x109E8988b2bb319421A6C3A38Ab24B7AD7db3931</td></tr><tr><td>DE000A3E5S26</td><td>NIINGR 4 05/31/26 NIIN</td><td>0x81762cf4DEf014a2786114Fe040E0c4DBce33FA4</td></tr><tr><td>DE000A3MP437</td><td>DEHEHO 2.125 03/10/29 B</td><td>0x8687d55415152038f0DCC489c2f499CA445BcC1B</td></tr><tr><td>DE000A3MP429</td><td>DEHEHO 1 04/30/26 A</td><td>0x83A3d768b8E07b7eC40d64c1923347A3101a4BB8</td></tr><tr><td>DE000A4DFHL5</td><td>ANNGR 0.875 05/20/32 B</td><td>0x0d40BdFe2Bc2dd5F113f5Dff3CB1E1A9fcE8a88A</td></tr><tr><td>FR0013418795</td><td>ORPFP 0.375 05/17/27</td><td>0xb74B5c1B1e2A3D659BCBE16bde7322Ce5B18f2a5</td></tr><tr><td>FR0013457942</td><td>ATOFP 0 11/06/24</td><td>0x1EB39a34DbC6C20AE0Bba73FC99b5b280FEa46FE</td></tr><tr><td>FR0014005AO4</td><td>CLARFP V1.875 PERP</td><td>0xc290C1011537A763e19E395f3880F5EEb5d2E9df</td></tr><tr><td>FR0014001WC2</td><td>BIGFP 1.125 02/19/26</td><td>0x0b4D2131269aBa77045F122287c9d0D9bDBAB06f</td></tr><tr><td>FR001400DU47</td><td>AFFP V6.5 PERP</td><td>0xF5f1cf19194668C506868a0f1B311ab4eA1d1919</td></tr><tr><td>FR001400CMS2</td><td>NEOEN 2.875 09/14/27 .</td><td>0xB03FA12c405653906D284702137A193c4AbE4a59</td></tr><tr><td>FR001400AFJ9</td><td>ELISGP 2.25 09/22/29</td><td>0xc7CeD28147690C38e35D411a23fDDA1b55665feB</td></tr><tr><td>FR001400F2K3</td><td>SPIEFP 2 01/17/28</td><td>0x0FB09fBA58946aC5F0D8c2061c6018A29D80ce59</td></tr><tr><td>IT0006769316</td><td>ENXFP 1.5 05/30/32</td><td>0x25b4f0Fd725783c9DaFe3891426f5EAC955d55b9</td></tr><tr><td>US02156BAF04</td><td>AYX 1 08/01/26</td><td>0x82f602F34294F872512f594295e8779cF1162eA7</td></tr><tr><td>US011642AC98</td><td>ALRM 2.25 06/01/29</td><td>0x4Ed1EE9E6Eb61b5F48588A70b9f21ebCa8E96F77</td></tr><tr><td>US00922RAD70</td><td>ATSG 3.875 08/15/29</td><td>0x44cd144A846fBD4d3fC9cFB67A007d2ec6541a82</td></tr><tr><td>US02043QAB32</td><td>ALNY 1 09/15/27</td><td>0xCab2878d51BA66ba152d337C6E5613e425833AaC</td></tr><tr><td>US02376RAF91</td><td>AAL 6.5 07/01/25</td><td>0x1a75575A3021D481b20e9358F4851aE1FcE10E86</td></tr><tr><td>US05464CAB72</td><td>AXON 0.5 12/15/27</td><td>0x48a887bE448b4CbC5ab654AB0E6e2d3927C4DF28</td></tr><tr><td>US05964HBH75</td><td>SANTAN V8 PERP</td><td>0x86eC21a88c146A62D1143B53Ac7Cc235523fB408</td></tr><tr><td>US09239BAE92</td><td>BL 1 06/01/29</td><td>0xa6dcf240C1132a51806Ee0d8CcaAB931bC3C94e4</td></tr><tr><td>US06738EDC66</td><td>BACR V7.625 PERP</td><td>0xbc650aeD7B213B14446E2b4A83E1cf99DFD86F57</td></tr><tr><td>US093712AL17</td><td>BE 3 06/01/29</td><td>0xA723Ec018A614AF80796aD5d42C3af0b954c64A5</td></tr><tr><td>US10806XAH52</td><td>BBIO 1.75 03/01/31</td><td>0xcA153Eb2A9a8BA8D7138048aab31a37B500804bA</td></tr><tr><td>US10806XAB82</td><td>BBIO 2.5 03/15/27</td><td>0xFFF1bC79Bb177696427Bf9701d19383B88C86a98</td></tr><tr><td>US12685JAE55</td><td>CABO 0 03/15/26</td><td>0x4FbA3c02bc7c0Bb63346C9df4B96DE508Ba46Ebf</td></tr><tr><td>US126349AH20</td><td>CSGS 3.875 09/15/28</td><td>0x6Dd68349B52a34EE783b280Bedd0aD85eDd4b45c</td></tr><tr><td>US207410AH48</td><td>CNMD 2.25 06/15/27</td><td>0x335D2819a7843556548514131FF097CBD1d69c4f</td></tr><tr><td>US21874AAC09</td><td>CORZ 3 09/01/29</td><td>0x5ceB7Ca763bD68bD975E4bd86768a2F3A251B96B</td></tr><tr><td>US23282WAC47</td><td>CYTK 3.5 07/01/27</td><td>0x74cd8c8824508C9dFe480Cd429032e77FE75AC10</td></tr><tr><td>US29786AAJ51</td><td>ETSY 0.125 10/01/26</td><td>0xd8717Da486e3f52E3cF32755795F9451D9CaD28b</td></tr><tr><td>US25402DAB82</td><td>DOCN 0 12/01/26</td><td>0x6f1386f24B316be0CB9fC293d1369b66c746B8ee</td></tr><tr><td>US30050BAG68</td><td>EVH 3.5 12/01/29</td><td>0xEF7f52f477aE83ab9e5fB9fb67b438888b35aA9F</td></tr><tr><td>US29355AAK34</td><td>ENPH 0 03/01/28</td><td>0xb670fCEa5DF680Df741BEC82D8915282f63fA6B2</td></tr><tr><td>US30034WAC01</td><td>EVRG 4.5 12/15/27</td><td>0xcc8Ff235fb2e2C69f2dfDB9AD2EceF85a23b81f4</td></tr><tr><td>US29786AAN63</td><td>ETSY 0.25 06/15/28</td><td>0x13F49D9eD838fae5ddb9cF7DdDF9DE04CE9a5085</td></tr><tr><td>US36467WAD11</td><td>GME 0 04/01/30</td><td>0x244FcB3fa053884b8411dc118e46fcb22932F324</td></tr><tr><td>US404280EJ42</td><td>HSBC V6.95 PERP</td><td>0x12cE0586FD8b4968B78775Cc0ae9542a70d67E8A</td></tr><tr><td>US456837AZ69</td><td>INTNED V4.25 PERP NC10</td><td>0x1438180ac5F3836727e64d64eaE261aE065C62F0</td></tr><tr><td>US58733RAD44</td><td>MELI 2 08/15/28</td><td>0x1970D99C4FBD2918F45802F2ECb8DFfd91e80624</td></tr><tr><td>US594972AK77</td><td>MSTR 0.875 03/15/31</td><td>0x1DA8D4E4D9c41D4b26CbaaC48fcfC1305f091261</td></tr><tr><td>US842587EC73</td><td>SO 3.25 06/15/28</td><td>0x7c58049775f39f6a8483Dc6285899944F07781bD</td></tr><tr><td>USG84228FJ22</td><td>STANLN V7.75 PERP REGs</td><td>0x85521D0B2c88225AA067711Baa441b22E78297Ce</td></tr><tr><td>BE6325746855</td><td>MITRAB 4.25 12/17/25</td><td>0xeCB607e9cE60991C39884436713c2Fe340d887D6</td></tr><tr><td>BE0933899800</td><td>FBAVP F PERP *</td><td>0xFF077f117F4b3226CeD94d118B589c7691CE1561</td></tr><tr><td>BE6322623669</td><td>UMIBB 0 06/23/25</td><td>0x7500fe1aa3219cb062d39A6dA0E7aF39574900eE</td></tr><tr><td>BE6317598850</td><td>AGSBB V3.875 PERP</td><td>0xb2F483f8e6741Da9999F0BD4b494aCAc671BedC1</td></tr><tr><td>NO0010867948</td><td>BWONO 2.5 11/12/24</td><td>0x3A0F05Df2e91FD40459346B36325D6681Fa5699c</td></tr><tr><td>US08862EAB56</td><td>BYND 0 03/15/27</td><td>0x395243eC99C8458c324f0C6e88aaf9Ca49d14587</td></tr><tr><td>US09857LAN82</td><td>BKNG 0.75 05/01/25</td><td>0x3C37491474644EcDe0b4B854805b5d816640d2d8</td></tr><tr><td>US08265TAB52</td><td>BSY 0.125 01/15/26</td><td>0x2bBCb7d540001Fd3939780Cf16E5Abb251476E03</td></tr><tr><td>US671044AE59</td><td>OSIS 2.25 08/01/29</td><td>0xe9Fcf81a23A304D53e027A63261dEc5Eb28d4B2b</td></tr><tr><td>US773122AA45</td><td>RKLB 4.25 02/01/29</td><td>0x56d735A35727C538EBdBa5Cd94B7731f06855e20</td></tr><tr><td>XS2127864622</td><td>ZJEXPC 0 01/20/26</td><td>0xA8F058Bb8cC7B531Ca927b8f51360D78B0BcEB6a</td></tr><tr><td>XS1793250041</td><td>SANTAN V4.75 PERP</td><td>0x026752D478A96213FFB4e28104C68FF614C2a128</td></tr><tr><td>US594972AN17</td><td>MSTR 2.25 06/15/32</td><td>0x0734772AC59704474Da73BBd5B892DD446DEebfB</td></tr><tr><td>US465741AQ90</td><td>ITRI 1.375 07/15/30</td><td>0xa5A8f60F620008A0f6B936f8D3B53E0c61536ad9</td></tr><tr><td>US70614WAD20</td><td>PTON 5.5 12/01/29</td><td>0x64979928f73E271638B7bD68af4bCF10f989c7F7</td></tr></tbody></table>

See [xft.finance/municipals](https://xft.finance/municipals) for full list of tokenized municipal bonds.


# Secondaries

All XFT secondary shares are denoted with a ".S" in the token symbol.

## Arbitrum Sepolia

<table><thead><tr><th width="165">Symbol</th><th width="143">Name</th><th width="429">Address</th></tr></thead><tbody><tr><td>GROQ.S</td><td>Groq</td><td>0xe534439c876992F245A1C2872B46fF98A1dDa6b1</td></tr><tr><td>RAMP.S</td><td>Ramp Business</td><td>0x3dD8300Ee2D4f33c2E56fa64784d59Fb637dcb52</td></tr><tr><td>STARBURST.S</td><td>Starburst</td><td>0xc2e595568DA2df41BA83F614d9DF234a7661F794</td></tr><tr><td>RIPPLING.S</td><td>Rippling</td><td>0x37C24bD2Da6B70217705c7E285BF939Ab49Bd21C</td></tr><tr><td>CLARA.S</td><td>Clara</td><td>0x25011f0B60feeef1f66f3268269e4ae32c6AFb2b</td></tr><tr><td>FIGMA.S</td><td>Figma</td><td>0x04335Fc8AEf51F07824AD66a8cac5a6586323578</td></tr><tr><td>PLAID.S</td><td>Plaid</td><td>0xAD02c42c62F18f597fa932162D255BAc98c29852</td></tr><tr><td>DISCORD.S</td><td>Discord</td><td>0xf01F077bcf0520b1F7c462C8D2B94c746F10b8e3</td></tr><tr><td>ANTHROPIC.S</td><td>Anthropic</td><td>0x334A69A8b2EC681e2890536CcE6e2630152675cF</td></tr><tr><td>ARCTIC.S</td><td>Arctic Wolf</td><td>0xeB9691f2D47F8BefcbC83024Fe60aAD00808a8B5</td></tr><tr><td>ID.S</td><td>ID.me</td><td>0x633219288E385c5F179e68fc0F5B05a0F0f42164</td></tr><tr><td>SOCURE.S</td><td>Socure</td><td>0x3f783746d0D78785CB5BAEd11b7C6E90CAd3902A</td></tr><tr><td>CRIBL.S</td><td>Cribl</td><td>0x3503d02C3d1b98afae196EBf52Ea8bd70Ee0f1e5</td></tr><tr><td>CHAINALYSIS.S</td><td>Chainalysis</td><td>0xd98eea466D7118eB9F536361Dea96BC96C05Cba0</td></tr><tr><td>PLUTO.S</td><td>Pluto</td><td>0xFe2740636d63e071f56976659352e3a8f6a8F126</td></tr><tr><td>VERCEL.S</td><td>Vercel</td><td>0x67F05C506fB6f50fb411b768cb0711bb05fd9Cef</td></tr><tr><td>ATTENTIVE.S</td><td>Attentive</td><td>0x1A9e201A6A4FcfA31eb5056987b557E0446d596A</td></tr><tr><td>AIRTABLE.S</td><td>Airtable</td><td>0xD7Db0BaF8f7bbD2656D815CF278294b296D2120B</td></tr><tr><td>ASAPP.S</td><td>Asapp</td><td>0x2b1dCe87754830CC9dF2D8B049a9bc5E104c72e3</td></tr><tr><td>SOURCEGRAPH.S</td><td>Sourcegraph</td><td>0x667741F9135E7F75E88b2Ca3468C4142bd83248C</td></tr><tr><td>GUPSHUP.S</td><td>GupShup</td><td>0x557E94B762B3dfbEbEe9b27BBb053C3AcdE0312f</td></tr><tr><td>SUNDAE.S</td><td>Sundae</td><td>0xA5b1Db308b91b65b267c60283d06E565dAc70066</td></tr><tr><td>CALM.S</td><td>Calm</td><td>0x1d1f9178f9e9C8e1FebAFaC1aAF0246F346e9e2F</td></tr><tr><td>DONOTPAY.S</td><td>DoNotPay</td><td>0x241Edc713f9615Cb3b3a37d203db058305769135</td></tr><tr><td>MOTIVE.S</td><td>Motive</td><td>0xFbdECf5CA21435fC15F01D3c8eA1Af583DFBa20d</td></tr><tr><td>YEXT.S</td><td>Yext</td><td>0xb2fE7C1F9a523Ae8D39eFDb29eb360a6e055D7dB</td></tr><tr><td>TALKDESK.S</td><td>Talkdesk</td><td>0x77D258825AB4Cd87cEd7c049690e51548172B7aa</td></tr><tr><td>STRIPE.S</td><td>Stripe</td><td>0xF55C094a1A3f8880e412d3233a75dD56BB113f72</td></tr><tr><td>OPENAI.S</td><td>OpenAI</td><td>0xBd40c380CBa2febD97642aaC4bCd21Fd06EF2C1d</td></tr></tbody></table>

See [xft.finance/secondaries](https://xft.finance/secondaries) for full list of tokenized secondaries.


# Music Royalties

## Arbitrum Sepolia

<table><thead><tr><th>Symbol</th><th>Name</th><th width="375">Address</th></tr></thead><tbody><tr><td>USUM70984099-SW</td><td>All The Right Moves (OneRepublic)</td><td>0xB970bAAA18Ba6021bEc3bd803845B431F36F1201</td></tr><tr><td>USUM70984099-SR</td><td>All The Right Moves (OneRepublic)</td><td>0xfFd98C3BB09CEDd8b0c9AAC48880f7E9A3EDC4b3</td></tr><tr><td>USUM71301307-SW</td><td>I Lived (OneRepublic)</td><td>0xdA6abC10f40bB896125515C9f100183C2884FB09</td></tr><tr><td>USUM71301307-SR</td><td>I Lived (OneRepublic)</td><td>0x4fDA2484C9457EE31046760eaB516D41909EfE34</td></tr><tr><td>USUM71209505-SW</td><td>Feel Again (OneRepublic)</td><td>0x45baDCc566F2d4195E748D9442296983DDE3E36E</td></tr><tr><td>USUM71302187-SW</td><td>Best Day Of My Life (American Authors)</td><td>0x50b5EAa4642324f54D63bD1568d5f87aE0656BA6</td></tr><tr><td>GBUM71303482-SW</td><td>Burn (Ellie Goulding)</td><td>0x6e6bE51325230e6C5C768888753DE66607f3DCb0</td></tr><tr><td>GBUM71303482-SR</td><td>Burn (Ellie Goulding)</td><td>0x8D6A9227f0171736a0100C584EdB8B3F75573276</td></tr><tr><td>GBAHS1300301-SW</td><td>Bonfire Heart (James Blunt)</td><td>0xaD53f561d985194e5568860C94E50bd869B54781</td></tr><tr><td>USUM70757102-SW</td><td>Apologize (Timbaland|OneRepublic)</td><td>0x667A50Db6bd8046AC1788e85572c7eAF62aa4E72</td></tr><tr><td>USUM70757102-SR</td><td>Apologize (Timbaland|OneRepublic)</td><td>0xB3995ff52ceFf895872199e99667c7885b2ED662</td></tr><tr><td>USUM71103756-SW</td><td>Brighter Than The Sun (Colbie Caillat)</td><td>0x828365EC5977f240F1F14336CAe0b663e6088D9C</td></tr><tr><td>USUM71103756-SR</td><td>Brighter Than The Sun (Colbie Caillat)</td><td>0xC7acfF7C378a389c109c0AeAE674aF7FDe5AaC29</td></tr><tr><td>SEBGA1700446-SW</td><td>Stranger Things (OneRepublic|Kygo)</td><td>0x0899a9F3CEe3f15D5f88D08e4210CaC50d94de15</td></tr><tr><td>USUM71407116-SW</td><td>Maps (Maroon 5)</td><td>0x0FB4aeC8a4F08EaFf754bd71caAC49645607FDFe</td></tr><tr><td>USUM71407116-SR</td><td>Maps (Maroon 5)</td><td>0x8589b5a7bc7D0F9b4752382C4930cD0554E48f75</td></tr><tr><td>QMUY41500013-MA</td><td>Powerful (Ellie Goulding|Major Lazer|Tarrus Riley)</td><td>0xbfCe57d8B27d0B9e2605783Abd1DD8C723AfA30D</td></tr><tr><td>US38W1229212-MA</td><td>Bubble Butt (Mystic|Tyga|Major Lazer|Bruno Mars)</td><td>0x896Df9157BC586B3BC8b422C45173e51757BF6E1</td></tr><tr><td>QMUY41700059-MA</td><td>Buscando Huellas (Sean Paul|J Balvin|Major Lazer)</td><td>0x649763927349c5215593f18BC1574900e1d978fc</td></tr><tr><td>GBBKS1000346-SW</td><td>Turning Tables (Adele)</td><td>0xcAbD6d120E2dA50b2C5207e7704AC870136D158D</td></tr><tr><td>USSM10804556-SW</td><td>Halo (Beyoncé)</td><td>0x2Ad37c262fD0536417ca19365925DdDB5f2e9445</td></tr><tr><td>USSM10804556-SR</td><td>Halo (Beyoncé)</td><td>0xb120075C03113a684c2De82541AD4E092251AEB8</td></tr><tr><td>USUM71703399-SW</td><td>No Vacancy (OneRepublic)</td><td>0x52C4C33228E681BA605329bb89F595D658A01A1D</td></tr><tr><td>USUM71204774-SW</td><td>Love Somebody (Maroon 5)</td><td>0xDe964F707E6F32174Cb3d8A48453D592dD749B22</td></tr><tr><td>USUM71204774-SR</td><td>Love Somebody (Maroon 5)</td><td>0x23E3CD5F2eb7426FFD8eC1EaA054a87F7bBbec98</td></tr><tr><td>USUM70974275-SW</td><td>Everybody Loves Me (OneRepublic)</td><td>0x48A5B31187898E2de3EeAb9bD9e3c5995ff73cEE</td></tr><tr><td>USUM70974275-SR</td><td>Everybody Loves Me (OneRepublic)</td><td>0x3940e32b297729f06b7987A47e204B10D7A1cff3</td></tr><tr><td>GBUM71404673-SR</td><td>Every Breaking Wave (U2)</td><td>0x880e1283C0d0C7A3FF188031c2C7315283Fc1101</td></tr><tr><td>QMUY41500009-MA</td><td>Be Together (Major Lazer|Wild Belle)</td><td>0x30734AaAF7e521857726A0765EEd73E3fade2263</td></tr><tr><td>GBCTA0900011-SW</td><td>Already Gone (Kelly Clarkson)</td><td>0xE04082B138c8f8153F678b58E2F17E5624b31FC0</td></tr><tr><td>USCJY1431299-SR</td><td>Welcome To New York (Taylor Swift)</td><td>0x0F1f8D3286701f27Bfe741F444c7595f922e80c1</td></tr><tr><td>GBBKS1500218-SW</td><td>Remedy (Adele)</td><td>0x5631D2f8254FB51Fe0Df670C92186F6942824DA2</td></tr><tr><td>GBBKS1500218-SR</td><td>Remedy (Adele)</td><td>0x13A7E86E3f80530133300f707588Bb8583Ad56c0</td></tr><tr><td>USUM71404631-SW</td><td>Love Runs Out (OneRepublic)</td><td>0xD025581e1872680f4C267C787c9b56Efa1Ca851a</td></tr><tr><td>USUM71404631-SR</td><td>Love Runs Out (OneRepublic)</td><td>0x4cabE9F2c505D43a7739E590967523aBd6Cb39dd</td></tr><tr><td>QMUY41600121-MA</td><td>Run Up (Major Lazer|PARTYNEXTDOOR|Nicki Minaj)</td><td>0xC363586d5A1d6CE7227D762283eF42b4c1375808</td></tr><tr><td>USUM70758804-SW</td><td>Stop And Stare (OneRepublic)</td><td>0xd91Eb2b8461E623eB4F50aCc74BCA7750E31F0e7</td></tr><tr><td>USUM70758804-SR</td><td>Stop And Stare (OneRepublic)</td><td>0x544608730C7610d8D8cF6D1577E1ed64f1952bA4</td></tr><tr><td>USUG11401744-MA</td><td>All My Love (Major Lazer|Ariana Grande)</td><td>0x606837E37458F42a15340695CC07b3b776a815cd</td></tr><tr><td>USUM71301310-SW</td><td>Something I Need (OneRepublic)</td><td>0x09389f03f3C70D69f06Bb21bE312C823a506F5AD</td></tr><tr><td>USUM71301306-SW</td><td>Counting Stars (OneRepublic)</td><td>0x64D9F44208Ef4F36ad17FA55f27406A7eF8A2a52</td></tr><tr><td>USUM71301306-SR</td><td>Counting Stars (OneRepublic)</td><td>0x6da18907531e5915fA1753DbcbD531DEb6CdE51C</td></tr><tr><td>USQ4E1602392-SR</td><td>Faith (Stevie Wonder|Ariana Grande)</td><td>0xB76dF07e1Fa6c4C9B7d94911E2d922509D39dbaC</td></tr><tr><td>QMUY41900102-MA</td><td>Make It Hot (Diplo|Anitta|Major Lazer)</td><td>0x3cCc956304151d1a92D9Ad9591eD2ebB560Ae2Ca</td></tr><tr><td>USUM71808832-SR</td><td>Connection (OneRepublic)</td><td>0x5413a6B65DC5aa0dDB40d5144B665cb18A2000Df</td></tr><tr><td>USUG11900515-SW</td><td>Sucker (Jonas Brothers)</td><td>0x6234b1958070778A09475b5E4C02651fEbD2eFA7</td></tr><tr><td>USUG11900515-SR</td><td>Sucker (Jonas Brothers)</td><td>0x94637D4Cfb75dA31984FaE4eA9791d7E7C5FCA75</td></tr><tr><td>QMUY42100008-MA</td><td>Titans (Diplo|Major Lazer|Labrinth|Sia)</td><td>0x0Cd790738f357E7c8188890b2A3C23D82ac68D9e</td></tr></tbody></table>

See [xft.finance/music-royalties](https://xft.finance/music-royalties) for all tokenized music royalty products.


# Structured Products

XFTBTC

XFTRWA

XFTRWA2

XFTRWA3

XFTRWA10


# Mutual Funds

XFT500

XFTRWA

BTCX


# Equity Perps

## WHY DERIVATIVES?&#x20;

<table><thead><tr><th width="225.800048828125">Users</th><th width="253.79998779296875">Underlying Risks</th><th>Derivative Types</th></tr></thead><tbody><tr><td>Commodity manufacturers</td><td>Commodity price</td><td>Commodity derivatives</td></tr><tr><td>Multinational companies</td><td>Funding cost of foreign debt issuance and investments</td><td>Cross-currency swaps / FX forwards</td></tr><tr><td>Life insurers</td><td>Asset-liability management</td><td>Interest rate swaps or swaptions</td></tr><tr><td>Corporate treasurers</td><td>Funding cost before debt issuance</td><td>Forward rate agreements</td></tr><tr><td>Construction firms</td><td>The cost of raw materials</td><td>Commodity derivatives</td></tr><tr><td>Exporters</td><td>Foreign exchange (FX) fluctuations</td><td>Cross-currency swaps / FX forwards</td></tr><tr><td>Bank or loan portfolio managers</td><td>Credit risk of bond or loan exposures</td><td>Credit default swaps</td></tr><tr><td>Equity investors</td><td>Equity prices</td><td>Equity derivatives</td></tr><tr><td>Governments</td><td>Interest rate risk on new bond issuance</td><td>Interest rate swaps</td></tr></tbody></table>

<https://why-derivatives.netlify.app/>

### Use cases

<mark style="color:red;">**Chevron**</mark> is exposed to market risks related to the price volatility of crude oil, refined products,\
natural gas, natural gas liquids, liquefied natural gas and refinery feedstocks. The company\
uses commodity derivatives to manage these exposures on a portion of its activity, including\
firm commitments and anticipated transactions for the purchase, sale and storage of crude oil,\
refined products, natural gas, natural gas liquids and feedstock for company refineries. The\
company also uses commodity derivatives for limited trading purposes16.

<mark style="color:red;">AT\&T</mark> is exposed to market risks primarily from changes in interest rates and foreign currency\
exchange rates. The company uses derivatives, including IRS, interest rate locks, foreign\
currency exchange contracts and cross-currency swaps, to manage its debt structure and foreign\
exchange exposure. This enables the firm to manage its capital costs, control financial risks and\
maintain financial flexibility over the long term15.

<mark style="color:red;">**Apple**</mark> uses derivatives to partially offset its business exposure to foreign currency and interest\
rate risk on expected future cashflows, net investments in certain foreign subsidiaries, and\
certain existing assets and liabilities. The company enters into interest rate swaps (IRS) to\
manage interest rate risk on its outstanding term debt. IRS allow the company to effectively\
convert fixed-rate payments into floating-rate payments or floating-rate payments into fixed rate.\
The company also uses forwards, cross-currency swaps or other instruments to protect its foreign\
currency denominated term debt or marketable securities from fluctuations in foreign currency\
exchange rates14.

<mark style="color:purple;">WHY BLOCKCHAIN-SETTLED PERPETUAL FUTURES?</mark>

No expiration, thus no need to roll over contracts. perpetual futures contract = perpetual swap&#x20;

<details>

<summary>Swap</summary>

• A swap is a contract calling for an exchange of\
payments, on one or more dates, determined by\
the difference in two prices.\
• A swap provides a means to hedge a stream of\
risky payments.\
• A single-payment swap is the same thing as a\
cash-settled forward contract.

</details>

<details>

<summary>What is a clearinghouse?</summary>

Matches buy and sell orders\
Keeps track of members’ obligations and payments\
After matching the trades, becomes counterparty

</details>

<details>

<summary>Futures contract</summary>

Futures are legally binding agreements to buy or sell a standardized asset on a specific date or\
during a specific month. These contracts are standardized and traded on futures exchanges.

A futures contract is an exchange-traded, standardized, forward-like\
contract that is marked to the market daily. Futures contract can\
be used to establish a long (or short) position in the underlying\
commodity/asset.

</details>

## Contract for differences (CFD)

Similar to a forward or futures contract that is cash settled. The amount of the cash settlement will represent the difference between the underlying asset's price agreed at the outset of the contract and its market price at the date of the settlement of the contract. CFDs can be long (that is, where the holder gains from a rise in the price of the underlying asset) or short (that, is where the holder gains from a fall in the price of the underlying asset).

However, unlike forwards and futures, CFDs are open-ended contracts with no fixed settlement date and can be closed out by the holder on demand. CFDs can offer exposure to a variety of financial assets, including single or multiple share indices, [*debt securities*](https://uk.practicallaw.thomsonreuters.com/0-207-6955?originationContext=document\&transitionType=DocumentItem\&contextData=\(sc.Default\)\&ppcid=1daa1f536b0145579299f9531df88b82), commodities and currencies. When applied to shares, a CFD is an equity [*derivative*](https://uk.practicallaw.thomsonreuters.com/0-107-6094?originationContext=document\&transitionType=DocumentItem\&contextData=\(sc.Default\)\&ppcid=1daa1f536b0145579299f9531df88b82) under which the holder generally does not have voting rights or a call option over the underlying shares.

## Spread-betting

1\. Send USD to broker margin account\
2\. Open long spread bet at broker offer price\
3\. Broker locks required margin\
4\. Market moves up → broker credits cash P\&L\
5\. Market moves down → broker debits cash P\&L\
6\. Each night broker debits financing (long) or credits financing (short)\
7\. Broker applies dividend credit (long) or debit (short)\
8\. If margin falls below threshold broker demands top-up or auto-closes\
9\. Close position → broker settles P\&L and releases remaining margin

<mark style="color:red;">auto-closes = auto de-leveraging?</mark>

### CFDs vs. Blockchain Equity Perpetuals

Similar payoff structure: both are synthetic exposure to price movements without delivery of underlying asset.

* Both cash-settled and&#x20;
* Both no expiry
* Both replicate PnL = size × (price change) over time

Key difference is how price anchoring is enforced.

## Futures vs. Forwards

Settled daily through mark-to-market process  low credit risk\
Highly liquid  easier to offset an existing position\
Highly standardized structure  harder to customize

Derivatives explained

| ASSET CLASS | FLOW OF FUNDS | PRICING LOGIC |
| ----------- | ------------- | ------------- |
|             |               |               |
|             |               |               |
|             |               |               |

## Close-out netting

Close-out netting is a process involving the termination of obligations under a contract with a\
defaulting party and subsequent combining of positive and negative replacement values into a\
single net payable or receivable. The diagram demonstrates payment obligations with and without\
close-out netting.

<figure><img src="/files/z3IvgH8i7WeoLlAFLlLR" alt=""><figcaption></figcaption></figure>

As close-out netting drastically reduces credit exposure between counterparties, it is the primary\
tool for mitigating credit risks associated with over-the-counter derivatives. Close-out netting is an\
essential component of the hedging activities of financial institutions and other users of derivatives.

## Physical vs. Financial Settlement

An industrial producer, IP Inc., needs to buy 100,000 barrels of oil 1 year from today and 2 years from today. The forward prices for deliver in 1 year and 2 years are $20 and $21/barrel. The 1- and 2-year zero-coupon bond yields are 6% and 6.5%.

IP can guarantee the cost of buying oil for the next 2 years by entering into long forward contracts for 100,000 barrels in each of the next 2 years. The PV of this cost per barrel is:

![](/files/OT6wl1IYrnha61CISJtZ)

Thus, IP could pay an oil supplier $37.383, and the supplier would commit to delivering one barrel in each of the next two years.

### Physical settlement

<figure><img src="/files/aTVQDtiZO6Z4qhcIIeYW" alt=""><figcaption></figcaption></figure>

### Financial settlement

The oil buyer, IP, pays the swap counterparty the difference between $20.483 and the spot price, and the oil buyer then buys oil at the spot price.

If the difference between $20.483 and the spot price is negative, then the swap counterparty pays the buyer.

<figure><img src="/files/82RdyrKaKiKN47cdIgl5" alt=""><figcaption></figcaption></figure>

<table><thead><tr><th width="172.5999755859375">Feature</th><th>Equity Swap</th><th>Total Return Swap (TRS)</th><th>CFD</th></tr></thead><tbody><tr><td>Target User</td><td>Institutional</td><td>Institutional</td><td>Retail + Professional</td></tr><tr><td>Underlying Asset</td><td>Equity index or basket</td><td>Any return-generating asset (stocks, index, bond portfolio, etc.)</td><td>Stocks, indices, forex, crypto, commodities</td></tr><tr><td>Dividends &#x26; Gains</td><td>Usually equity price return only</td><td>Includes dividends + capital gains</td><td>Reflected in price, not paid directly</td></tr><tr><td>Leverage</td><td>Not common</td><td>Possible, but structured</td><td>Built-in, broker-defined</td></tr><tr><td>Contract Form</td><td>OTC, bilateral</td><td>OTC, bilateral</td><td>OTC, broker-standardized</td></tr><tr><td>Use Case</td><td>Hedging, passive exposure</td><td>Synthetic ownership, balance sheet optimization</td><td>Trading, speculation, short-term views</td></tr><tr><td>Settlement</td><td>Periodic cash flows</td><td>Periodic cash flows</td><td>Open-ended; exit anytime</td></tr></tbody></table>

<table><thead><tr><th width="191.4000244140625">Feature</th><th>CFDs</th><th>Equity Swaps</th></tr></thead><tbody><tr><td>Target User</td><td>Retail traders and professionals</td><td>Institutions only (banks, funds, corporates)</td></tr><tr><td>Underlying Assets</td><td>Stocks, indices, forex, commodities, crypto</td><td>Usually indices or custom equity baskets</td></tr><tr><td>Leverage</td><td>Available, broker-defined</td><td>Not typical, exposure usually unleveraged</td></tr><tr><td>Use Case</td><td>Trading, speculation, short-term positioning</td><td>Synthetic exposure, hedging, tax optimization</td></tr><tr><td>Settlement</td><td>Open-ended; gain/loss realized at close</td><td>Periodic cash flows exchanged based on contract terms</td></tr><tr><td>Contract Form</td><td>Standardized by broker, OTC</td><td>Fully customized bilateral OTC agreement</td></tr><tr><td>Execution &#x26; Access</td><td>Direct from trading platforms, fast entry/exit</td><td>Requires negotiation, legal framework, counterparty agreement</td></tr><tr><td>Market Familiarity</td><td>Easy to start, platform-based execution</td><td>Requires legal/compliance infrastructure and knowledge of swap mechanics</td></tr></tbody></table>

## Novation

Novation = P2P bilateral transfers?

<figure><img src="/files/4xioSTtyKQ25KhiQITwD" alt=""><figcaption></figcaption></figure>

For pensions

<figure><img src="/files/Ose565wbh4PBraDEI451" alt=""><figcaption></figcaption></figure>

For electricity generation

<figure><img src="/files/rhvL0eyipkxp17xyAVGu" alt=""><figcaption></figcaption></figure>

## DTCC

<figure><img src="/files/irtDZuW4MBe2MY8LvW7b" alt=""><figcaption></figcaption></figure>

[Source](https://www.cls-group.com/media/h5zc5qfp/clssettlement_otc_derivatives_feb2024_v1.pdf)

## ETF Replication

Characteristics of Physical ETFs and Synthetic ETFs

<table><thead><tr><th width="213.7999267578125"></th><th width="235">Physical ETFs</th><th>Synthetic ETFs</th></tr></thead><tbody><tr><td>Underlying Holdings</td><td>Securities of the Index</td><td>Swaps and Collateral</td></tr><tr><td>Transparency</td><td>Transparent</td><td> Historically Low</td></tr><tr><td>Counterparty Risk</td><td>Limited</td><td>Existent (higher than physical ETFs)</td></tr><tr><td>Costs</td><td>Transactions Costs Management Fees</td><td>Swap Costs Management Fees</td></tr></tbody></table>

<figure><img src="/files/CjPvORFZbLuGfwxPMILy" alt=""><figcaption></figcaption></figure>

The unfunded model&#x20;

<figure><img src="/files/4f78PJ4wn7HW5vO7VlOI" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/8PvGn5ixt3Rr00nXF0Ju" alt=""><figcaption></figcaption></figure>

Fully funded&#x20;

<figure><img src="/files/5I3hqgHj4RSRUM0vseaM" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/izJsjWIukj6zNxdezu9K" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/uCbpjjyXzXmpq7homulh" alt=""><figcaption></figcaption></figure>

**Centrally-cleared derivatives**

<mark style="color:purple;">COUNTERPARTIES</mark>

End user – the reporting entity hedging its risk\
Swap execution facility – the trading system used to provide pre-trade information (i.e., bid and offer prices) and the mechanism for executing swap transactions\
Swap dealer – the market maker in swaps that regularly enters into swaps with counterparties\
Clearing member – a member firm of a clearing house and a derivative exchange

<figure><img src="/files/2SGc5jaqKMV2F2Xst7yW" alt=""><figcaption></figcaption></figure>

Parties to an OTC derivative

<figure><img src="/files/Tecr3DGsybVtbFfaKRMl" alt=""><figcaption></figcaption></figure>

***

RESOURCES

[Professor Ian Giddy: Futures and Options](https://pages.stern.nyu.edu/~igiddy/futures.htm)

<https://www.ceem.unsw.edu.au/sites/default/files/documents/ceem-derivatives.pdf>

[Overview of the EMR Settlement Process](https://www.emrsettlement.co.uk/document/working-practice/wp1-overview-of-settlement/)

[G24 – CfD Generator&#x20;Payments](https://www.emrsettlement.co.uk/document/guidance/g24-cfd-generator-payments/)

[BNY CFD pricing and best practices](https://eagledocs.atlassian.net/wiki/spaces/IE/pages/1658978621/Contracts+for+Differences+CFD+Best+Practices)

[Ukraine - Settlement diagrams.pdf](https://apps.rbcits.com/RFP/gmi/marketprofiles/Ukraine%20-%20Settlement%20diagrams.pdf)

[ISDA Legal Guidelines for Smart Derivatives Contracts](https://www.isda.org/a/bPYTE/ISDA-Legal-Guidelines-for-Smart-Derivatives-Contracts-FX.pdf)

[ISDA OTC Commodity Derivatives&#x20;Trade Processing Lifecycle Events](https://www.isda.org/a/d0DDE/commoditieslifecycleevents-april-25.pdf)

[ISDA Overview of OTC&#x20;Equity Derivatives&#x20;Markets: Use&#x20;Cases and Recent&#x20;Developments](https://www.isda.org/a/1IhgE/Overview-of-OTC-Equity-Derivatives-Markets-Use-Cases-and-Recent-Developments.pdf)

[FSB Implementing OTC Derivatives Market Reforms](https://www.fsb.org/uploads/r_101025.pdf)

[Rollover Hedging and Missing Long-Term Futures Markets](https://onlinelibrary.wiley.com/doi/abs/10.2307/1241588)

[A Primer on Equity Swaps](https://bsic.it/a-primer-on-equity-swaps/)

[SURREY PENSION FUND SYNTHETIC EQUITY](https://mycouncil.surreycc.gov.uk/documents/s13818/Annex%202.pdf)

[OTC derivatives: A primer on market infrastructure ](https://www.chicagofed.org/-/media/publications/economic-perspectives/2014/3q2014-part2-ruffini-steigerwald-pdf.pdf?sc_lang=en)

[Princeton asset pricing ](https://www.princeton.edu/~markus/teaching/Fin501/09Lecture.pdf)

[IRS and Currency Swaps w/ good hedging flows ](https://rpc.cfainstitute.org/sites/default/files/-/media/documents/book/rf-publication/1995/rf-v1995-n4-4453-pdf.pdf)

[Vanguard ETF replication ](https://www.nl.vanguard/professional/vanguard-365/investment-knowledge/etf-knowledge/etf-basics)

[Euroclear OTC derivatives](https://www.euroclear.com/campaigns/en/innovation/OTC-derivatives-A-paradigm-shift.html)

[Swap ETFs: Synthetic replication of ETFs](https://www.justetf.com/en/academy/synthetic-replication-of-etfs.html)

[FI Security Handbook](http://docs.finance.free.fr/DOCS/Bloomberg%20Press,.Fixed%20Income%20Securities%20and%20Derivatives.pdf)

[Princeton Credit Default Swaps](https://www.princeton.edu/~markus/teaching/Eco467/10Lecture/CDS%20Presentation%20with%20References.pdf)

[MIT Lecture 5: Forwards and Futures Lecture 5: Forwards and Futures](https://web.mit.edu/astomper/www/univie/pof/Chapter%205.pdf)

[The CDO Machine](https://fcic-static.law.stanford.edu/cdn_media/fcic-reports/fcic_final_report_chapter8.pdf)


# Prediction Markets

<mark style="color:purple;">ARBITRUM SEPOLIA</mark>

Admin [0x2f572059DbC598C8acfeA4AF06FE4f7669D1b3b1](https://sepolia.arbiscan.io/address/0x2f572059dbc598c8acfea4af06fe4f7669d1b3b1)\
User \
USDXT [0xC1BF9854E43b84f3abec5f5d1C72F0a6f602034b](https://sepolia.arbiscan.io/address/0xc1bf9854e43b84f3abec5f5d1c72f0a6f602034b)\
XFTConditionalTokens.sol [0x786Bc48C7ef3E9AA811068Fb4b0eC0DC01028740](https://sepolia.arbiscan.io/address/0x786bc48c7ef3e9aa811068fb4b0ec0dc01028740)\
XFTPredictionMktFacility.sol [0x0D7D51d9E48bfC9E8ec8B9144BC836fBa49cBe28](https://sepolia.arbiscan.io/address/0x0D7D51d9E48bfC9E8ec8B9144BC836fBa49cBe28)


# Perpetual Overnight Rate Treasury Securities (PORTS)

[The case for a new floating rate Treasury note](https://www.brookings.edu/articles/the-case-for-a-new-floating-rate-treasury-note/)


# FAQs

**Q: What is the BITNET?**\
A: The BITNET is XFT's all-to-all blockchain trading system home to 20000+ tokenized securities across all asset classes.

**Q: Why BITNET?**\
A: Programmatic multi-asset composability. Offline digital payments. Use stocks, bonds, real estate to buy groceries.

BITNET improves:&#x20;

1. Operational risk mitigation through standardization and automation
2. Intraday liquidity
3. Post-trade FX matching and netting processes

BITNET reduces:&#x20;

1. Funding and number of payments required
2. Inconsistent FX matching and FX netting
3. Credit consumption
4. Intraday overdraft costs and correspondent bank charges
5. Communication required to confirm positions pre-settlement

**Q: What is the International Deposits Network?**\
A: The International Deposits Network (IDN) is XFT's RTGS payment system for tokenized commercial bank deposits. It is used to put onchain tokenized products into traditional offchain bank accounts. Send cross-border real-time payments using IDN blockchain deposit accounts.

**Q: What is XFT Token Service?**\
A: XFT Token Service generates TANs for legacy and blockchain payment rail interoperability. This means users can send stablecoins to a wallet using, for example, the associated ABA RTN. It is also used for onchain bank account creation.

**Q: What is Bitstream?**\
A: Bitstream is the central securities depository arm of The XFT Group.

<mark style="color:red;">**Q: What is the Direct Registration System (DRS)?**</mark>\
A: DRS allows registered shares to be held in electronic form without having a physical security certificate issued as evidence of ownership.

**Q: How are my securities protected if I choose street name ownership?**\
A: Nearly all broker-dealers are members of Securities Investor Protection Corporation (“SIPC”). SIPC protects customers of a SIPC member broker-dealer against the loss of securities and cash deposited with that SIPC member for the purchase of securities. If that SIPC-member broker-dealer fails, SIPC advances up to $500,000 per customer (including a $250,000 limit for cash claims) to cover a shortfall in customer property. Many broker-dealers also carry insurance in excess of SIPC’s coverage. However, SIPC does not protect you against losses caused by a decline in the market value of your securities. For more information about SIPC coverage, please read the SEC’s Investor Bulletins “SIPC Basics Parts 1 and 2” and the SEC’s glossary term on “SIPC protection".

**Q: What is a medallion guarantee?**\
A: Medallion Guarantee is a special stamp that’s used when you sell or transfer US securities. It confirms that the signature authorizing the sale or transfer is genuine and that the signer has the legal capacity and authority to sign the document.

<details>

<summary>Why blockchain DRS?</summary>

<mark style="color:red;">FOR INVESTORS:</mark>

* **Registered legal ownership:** DRS records the investor’s name on the issuer’s books, clarifying legal ownership and simplifying some ownership disputes.
* **Direct proxy and voting communications:** Registered owners typically receive proxy materials and can vote directly with the issuer, improving participation in corporate governance.
* **Reduced share lending risk:** Shares in DRS are generally not available for broker lending, which reduces the chance that your shares will be loaned out into short positions.
* **Protection from broker account actions:** Because holdings are off the broker’s books, certain broker-level events (e.g., broker insolvency, margin liquidation) may have different operational implications for DRS-registered shares.
* **Direct receipt of issuer communications and corporate action processing:** Transfer agents send notices and process corporate actions for registered owners.

<mark style="color:blue;">FOR ISSUERS/CORPORATES:</mark>

* **Clearer shareholder records:** Direct registration gives issuers an accurate list of registered owners, which aids governance, mailings, and engagement.
* **Improved governance and communication:** With direct registration, issuers can target shareholder outreach and ensure delivery of proxy materials.
* **Potential reduction in abusive shorting/over-lending:** A higher proportion of shares registered directly may reduce shares available for lending, potentially lowering mismatch between outstanding shares and borrowable supply.

***

Issuer Benefits

* Access a new, broader global investor base
* Reduce financing costs and retain more proceeds
* Control timing and parameters of share issuance
* Receive stablecoin proceeds instantly at settlement

Investor Benefits

* Buy newly issued shares straight from the company
* Access pricing below Nasdaq or NYSE markets
* Receive tokenized shares with instant settlement
* Full economic and governance rights and additional onchain utility over time

</details>

<details>

<summary>Why blockchain DRS for investors?</summary>

<mark style="color:red;">Registered legal ownership:</mark> DRS records the investor’s name on the issuer’s books, clarifying legal ownership and simplifying some ownership disputes.

<mark style="color:red;">Direct proxy and voting communications:</mark> Registered owners typically receive proxy materials and can vote directly with the issuer, improving participation in corporate governance.

<mark style="color:red;">Reduced share lending risk:</mark> Shares in DRS are generally not available for broker lending, which reduces the chance that your shares will be loaned out into short positions.

<mark style="color:red;">Protection from broker account actions:</mark> Because holdings are off the broker’s books, certain broker-level events (e.g., broker insolvency, margin liquidation) may have different operational implications for DRS-registered shares.

<mark style="color:red;">Direct receipt of issuer communications and corporate action processing:</mark> Transfer agents send notices and process corporate actions for registered owners.

</details>

<details>

<summary>Why blockchain DRS for issuers/corporates?</summary>

<mark style="color:blue;">Clearer shareholder records:</mark> Direct registration gives issuers an accurate list of registered owners, which aids governance, mailings, and engagement.

<mark style="color:blue;">Improved governance and communication:</mark> With direct registration, issuers can target shareholder outreach and ensure delivery of proxy materials.

<mark style="color:blue;">Potential reduction in abusive shorting/over-lending:</mark> A higher proportion of shares registered directly may reduce shares available for lending, potentially lowering mismatch between outstanding shares and borrowable supply.

</details>

<details>

<summary>What is Order Matching System?</summary>

An order matching system is an electronic platform that automatically pairs buy and sell orders for securities based on criteria like price and quantity.

</details>

ECN FAQ

<details>

<summary>How does the order book work? </summary>

The order book is where all the open orders, bids (open buys) and asks (open sells), for a stock are listed.

New bids are matched against asks on the order book, and new asks are matched against bids on the order book for execution.

</details>

<details>

<summary>How are orders matched?</summary>

In general, orders are matched when bid (*buy*) and ask (*sell*) prices **equal** or **cross** each other - prioritized based on “best price” and time submitted.

Prices **cross** when a bid (an order to *buy*) is placed at a price higher than any current asks on the order book, or vice versa, when an ask (an order to *sell*) is placed at a price lower than any current bids on the order book.

</details>

### Definitions, acronyms, and abbreviations <a href="#definitions-acronyms-and-abbreviations" id="definitions-acronyms-and-abbreviations"></a>

***

SSI = Standing Settlement Instruction

SI = Settlement Instruction

Cash in lieu is a de facto sale of a stock.

a sampling index fund

heartbeat trades

rebalance drag

tax drag

tracking error

full replication

synthetic replication

total return swap

bona fide market making

Continuous Net Settlement (CNS)

Continuous Linked Settlement (CLS)

sub m&#x20;

reg sho

create-to-lend

failure to deliever

contra side

reverse conversions

FLEX option

hard-to-borrow

threshold securities

married put

Primary market: the market that deals with the issuance of new securities

Secondary market: where investors purchase securities/ETFs&#x20;from other investors

[Continuous net settlement (CNS)](https://www.nasdaq.com/glossary/c/continuous-net-settlement)\
Method of [securities](https://www.nasdaq.com/glossary/s/security) clearing and [settlement](https://www.nasdaq.com/glossary/s/settlement) using a [clearing house](https://www.nasdaq.com/glossary/c/clearinghouse), which matches [transactions](https://www.nasdaq.com/glossary/t/transaction) to [securities](https://www.nasdaq.com/glossary/s/security) available, resulting in one [net](https://www.nasdaq.com/glossary/n/net) receive or deliver [position](https://www.nasdaq.com/glossary/p/position) at the end of the day.

* **Authorized participants:** Large institutions that transact directly with the ETF provider to create or redeem shares of an ETF.
* **Creation unit:** The minimum number of ETF shares required to transact directly with the ETF issuer.
* **Primary market:** The direct exchange of securities for shares of an ETF between authorized participants and ETF issuers.
* **Secondary market:** The national markets system (e.g., the stock exchanges and other venues where listed securities can be traded). Shares of ETFs are continuously bought and sold throughout the day on an exchange or other trading venue by investors.

CORPORATE ACTIONS

* Cash dividend on equities / preference shares
* Stock dividend on equities
* Interest on bonds / fixed income securities
* Redemption of bonds / fixed income securities either on Call / maturity date
* Exercise of rights / warrants associated with securities

CORPORATE ACTIONS

Stock Splits\
Cash Dividend\
Stock Dividend\
Interest on Fixed Income Securities\
Redemption on Fixed Income Securities\
Rights / Warrants\
Stock Splits\
Mergers and Spin-offs

***

RESOURCES

[DTCC Alert](https://dtcclearning.com/helpfiles/data/alert/bd_help/Content/Topics/help/bd/home_page/coveo_exclude/bd_hp.htm)

[SEC counterfeiting stock](https://www.sec.gov/comments/s7-12-15/s71215-9342251-260411.pdf)

<https://www.bitget.com/wiki/what-is-drs-in-stocks>

<https://en.wikipedia.org/wiki/Clearing_House_Electronic_Subregister_System>


# Security Types

Equity\
Common Stock\
Convertible Common Stock\
Preferred Stock\
Convertible Preferred Stock\
Tender Rate Preferred Stock\
Limited Partnership\
CMO Denom in "Units" or "Undivided Interest"\
ABS Denom in "Units" or "Undivided Interest"\
Issue Denom in "Units" or "Undivided Interest"\
Auction Rate Preferred Stock (ARPS)\
American Depositary Receipt (ADR)\
Depository Share\
Municipal Option Call Right\
Exchange Traded Funds\
MMI Preferred Stock (In CP-like mode)\
Sealed Envelope\
Real-Estate Investment Trust (REIT)\
Municipal Bond\
Municipal Note\
Municipal Auction Rate Note (ARN)\
Municipal Variable Mode Obligation (VMO)\
Municipal Variable Rate Demand Obligation (VRDO)\
Municipal Insured Custodial Receipt\
MMI Municipal VRDO/CP\
MMI Municipal Commercial Paper\
Bearer, Callable Zero Coupon Bond\
GNMA REMIC Securities\
GNMA Pass-Through Securities\
GNMA Serial Note Securities\
Corporate Bond (CB) or Global Corp Bond (GBB)\
MMI Bankers' Acceptance Notes (BA)\
MMI Institutional Certificates of Deposit\
Certificated Money Market Instrument\
Certificated Money Market - Periodic Payer\
Certificates of Deposit\
CPI Interest At Maturity (IAM) Commercial Paper\
Periodic Payment Commercial Paper\
CPI Discount Commercial Paper (CP)\
MMI Corporate Commercial Paper\
MMI Corporate VRDO/CP\
MTN Medium Term Note\
MMI Deposit Note\
MMI Medium-Term Bank Note\
MMI Medium Term Note\
Collateralized Mortgage Obligations or Global CMO\
Asset-Backed Security (ABS) or Global ABS (GABS)\
Non-CMO/ABS Amortizing Issue\
MMI Short-Term Bank Note\
Z CPN Denom in Initial Principal Amt\
MMI Discount Note\
Corporate Auction Rate Note\
Convertible Corporate Debt\
Corporate Variable Mode Obligation (CVMO)\
Corporate Short -Term Note\
Corporate Debenture\
Corporate VRDO / Municipal VRDO (MMD)\
Corporate Insured Custodial Receipt\
Tender Rate Note\
Zero Coupon Bond\
Government Security\
Government Trust Certificate\
Junk and Treasury Growth Receipt (JGR)\
US Treasury Security\
US Treasury Bill\
US Treasury Note\
US Treasury Bond\
US Government Agency Security\
Government National Mortgage Association (GNMA)\
REMIC (Real Estate Mortgage Investment Conduit)\
GNMA Serial Note\
Package\
Corporate Debt Derivative\
Equity Derivative\
Municipal Derivative\
Municipal Amortized Issue\
Option Derivative\
Warrant\
Right\
Mutual Fund\
Closed End Fund\
(IMMI) Institutional MMI Mutual Fund Shares\
Equity Unit\
Debt Unit\
Unit Investment Trust (UIT) - Nuveen Only\
Global Unit Trust\
Unit Investment Trust (UIT)


# Bond Protocol

### Bond Protocol <a href="#bond-protocol" id="bond-protocol"></a>

* **Symbol:** ISIN
* **Name:** \[issuer] \[coupon] \[maturity]

Example:

* Symbol = ISIN = US48251W5004
* Name = Ticker = KKR 6.25 03/01/28


# Currency Codes

| Code | Currency                        |
| ---- | ------------------------------- |
| AAL  | CAYMAN LAND DOLLAR              |
| ADP  | ANDORRAN PESETA                 |
| AED  | UAE DIRHAM                      |
| AFA  | AFGHANI                         |
| ALL  | LEK                             |
| ANG  | NETHERLANDS ANTILLEAN GUILDER   |
| AON  | NEW KWANZA                      |
| ARA  | AUSTRAL                         |
| ATS  | SHILLING                        |
| AUD  | AUSTRALIAN DOLLAR               |
| AWG  | ARUBAN GUILDER                  |
| BBD  | BARBADOS DOLLAR                 |
| BDT  | TAKA                            |
| BEF  | BELGIAN FRANC                   |
| BGL  | LEV                             |
| BHD  | BAHRAINI DINAR                  |
| BIF  | BURUNDI FRANC                   |
| BMD  | BERMUDIAN DOLLAR                |
| BND  | BRUNEI DOLLAR                   |
| BOB  | BOLIVIANO                       |
| BRE  | CRUZIERO                        |
| BSD  | BAHAMIAN DOLLAR                 |
| BTN  | NGULTRUM                        |
| BWP  | PULA                            |
| BZD  | BELIZE DOLLAR                   |
| CAD  | CANADIAN DOLLAR                 |
| CHF  | SWISS FRANC                     |
| CLF  | UNIDADES DE FOMENTO             |
| CNY  | YUAN RENMINBI                   |
| COP  | COLOMBIAN PESO                  |
| CRC  | COSTA RICAN COLON               |
| CSK  | KORUNA                          |
| CUP  | CUBAN PESO                      |
| CVE  | CAPE VERDE ESCUDO               |
| CYP  | CYPRUS POUND                    |
| DEM  | DEUTSCHE MARK                   |
| DJF  | DJIBOUTI FRANC                  |
| DKK  | DANISH KRONE                    |
| DOP  | DOMINICAN PESO                  |
| DZD  | ALGERIAN DINAR                  |
| ECS  | SUCRE                           |
| EGP  | EGYPTIAN POUND                  |
| ESB  | CONVERTIBLE PESETA ACCOUNTS     |
| FIM  | MARKKA                          |
| FJD  | FIJI DOLLAR                     |
| FKP  | FALKLAND ISLANDS POUND          |
| FRF  | FRENCH FRANC                    |
| GBP  | POUND STERLING                  |
| GHC  | CEDI                            |
| GIP  | GIBRALTAR POUND                 |
| GMD  | DALASI                          |
| GNF  | GUINEA FRANC                    |
| GRD  | DRACHMA                         |
| GTQ  | QUETZAL                         |
| GWP  | GUINEA-BISSAU PESO              |
| GYD  | GUYANA DOLLAR                   |
| HKD  | HONG KONG DOLLAR                |
| HNL  | LEMPIRA                         |
| HTG  | GOURDE                          |
| HUF  | FORINT                          |
| IDR  | RUPIAH                          |
| IEP  | IRISH POUND                     |
| ILS  | SHEKEL                          |
| INR  | INDIAN RUPEE                    |
| IQD  | IRAQI DINAR                     |
| IRR  | IRANIAN RIAL                    |
| ISK  | ICELAND KRONA                   |
| ITL  | ITALIAN LIRA                    |
| JMD  | JAMAICAN DOLLAR                 |
| JOD  | JORDANIAN DINAR                 |
| JPY  | YEN                             |
| KES  | KENYAN SHILLING                 |
| KHR  | RIEL                            |
| KMF  | COMORO FRANC                    |
| KPW  | NORTH KOREAN WON                |
| KRW  | WON                             |
| KWD  | KUWAITI DINAR                   |
| KYD  | CAYMAN ISLANDS DOLLAR           |
| LAK  | KIP                             |
| LBP  | LEBANESE POUND                  |
| LKR  | SRI LANKA RUPES                 |
| LRD  | LIBERIAN DOLLAR                 |
| LSL  | LOTI                            |
| LUF  | LUXEMBOURG FRANC                |
| LYD  | LIBYAN DINAR                    |
| MAD  | MOROCCAN DIRHAM                 |
| MGF  | MALAGASY FRANC                  |
| MMK  | KYAT                            |
| MNT  | TUGRIK                          |
| MOP  | PATACA                          |
| MRO  | OUGUIYA                         |
| MTL  | MALTESE LIRA                    |
| MUR  | MAURITIUS RUPEE                 |
| MVR  | RUFIYAA                         |
| MWK  | KWACHA                          |
| MXP  | MEXICAN PESO                    |
| MYR  | MALAYSIAN RINGGIT               |
| MZM  | METICAL                         |
| NGN  | NAIRA                           |
| NIO  | CORDOBA ORO                     |
| NLG  | NETHERLANDS GUILDER             |
| NOK  | NORWEGIAN KRONE                 |
| NPR  | NEPALESE RUPEE                  |
| NZD  | NEW ZEALAND DOLLAR              |
| OMR  | RIAL OMANI                      |
| PAB  | BALBOA                          |
| PEN  | NUEVA SOL                       |
| PGK  | KINA                            |
| PHP  | PHILIPPINE PESO                 |
| PKR  | PAKISTAN RUPEE                  |
| PLZ  | ZIOTY                           |
| PTE  | PORTUGUESE EXCUDO               |
| PYG  | GUARINI                         |
| QAR  | QATARI RIAL                     |
| ROL  | LEU                             |
| RWF  | RWANDA FRANC                    |
| SAR  | SAUDI RIYAL                     |
| SBD  | SOLOMAN ISLANDS DOLLAR          |
| SCR  | SEYCHELLES RUPEE                |
| SDP  | SUDANESE POUND                  |
| SEK  | SWEDISH KRONA                   |
| SGD  | SINGAPORE DOLLAR                |
| SHP  | ST. HELENA POUND                |
| SLL  | LEONE                           |
| SOS  | SOMALI SHILLING                 |
| SRG  | SURINAM GUILDER                 |
| STD  | DOBRA                           |
| SUR  | ROUBLE                          |
| SVC  | EL SALVADOR COLON               |
| SYP  | SYRIAN POUND                    |
| SZL  | LILANGENI                       |
| THB  | BAHT                            |
| TND  | TUNISIAN DINAR                  |
| TOP  | PA'ANGA                         |
| TPE  | TIMOR ESCUDO                    |
| TRL  | TURKISH LIRA                    |
| TTD  | TRINIDAD AND TOBAGO DOLLAR      |
| TWD  | NEW TAIWAN DOLLAR               |
| TZS  | TANZANIA SHILLING               |
| UGX  | UGANDA SHILLING                 |
| UYP  | URUGUAYAN PESO                  |
| VEB  | BOLIVAR                         |
| VND  | DONG                            |
| VUV  | VATU                            |
| WST  | TALA                            |
| XAF  | CFA FRANC BEAC                  |
| XAG  | SILVER                          |
| XAU  | GOLD                            |
| XBA  | EUROPEAN COMPOSITE UNIT(EURCO)  |
| XBB  | EUROPEAN MONETARY UNIT(EMU-6)   |
| XBC  | EURO UNIT OF ACCOUNT-9(EUA-9)   |
| XBD  | EURO UNIT OF ACCOUNT-17(EUA-17) |
| XCD  | EAST INT'L MONETARY FUND(IMF)   |
| XEU  | EUROPEAN CURRENCY UNIT(ECU)     |
| XFO  | GOLD FRANC                      |
| XFP  | CFP FRANC                       |
| XFU  | UIC-FRANC                       |
| XOF  | CFA FRANC BCEAO                 |
| XPT  | PLATINUM                        |
| XXX  | TRANSITIONS WITHOUT CURRENCY    |
| YER  | YEMENI RIAL                     |
| YUN  | YUGOSLAVIAN DINAR               |
| ZAL  | FINANCIAL RAND                  |
| ZMK  | KWACHA                          |
| ZRZ  | ZAIRE                           |
| ZWD  | ZIMBABWE DOLLAR                 |


# Lifecycle

AAPL sent to buyer wallet / USD sent to seller wallet

TRADE LIFECYCLE

1. Trade Initiation
2. Trade Execution
3. Trade Capture
4. Trade Enrichment
5. Trade Validation
6. Trade Verification
7. Trade Allocation
8. Trade Agreement
9. Trade Affirmation
10. Trade Confirmation
11. Clearing
12. Settlement
13. Reconciliation
14. Trade Reporting

TOKENIZED NEW ISSUES / OFFCHAIN USD

* Buyer sends USD to XFT.
* XFT confirms receipt.
* XFT mints stablecoin.
* DvP executes.
* XFT wires USD to seller's bank.


# Maker-Taker

**Makers** (liquidity providers who place resting limit orders) earn a rebate per share

**Takers** (liquidity consumers who execute against resting orders) pay a fee per share

**Maker-Taker Fee Flow:**

```
MAKER posts limit order
    └→ Order rests in book (adds liquidity)
        └→ TAKER executes market order against it
            ├→ Maker EARNS rebate:  $0.0020/share
            ├→ Taker PAYS fee:      $0.0030/share
            └→ ECN KEEPS spread:    $0.0010/share
```

*The rebate incentivizes tighter spreads → more volume → more rebate opportunities → tighter spreads. A self-reinforcing flywheel.*


# DvP

DvP

<figure><img src="/files/PZ1rRZO2Cpa66I9jP9Zd" alt="" width="375"><figcaption></figcaption></figure>

1\. Alice sends USD to HTLC\
2\. Bob sends XRT to HTLC \
3a. HTLC sends XRT to Alice \
3b. HTLC sends USD to Bob

{% tabs %}
{% tab title="ETF" %}

<figure><img src="/files/VgjcTxWuVAufS2oA8KaD" alt=""><figcaption></figcaption></figure>

1\. AP sends basket to HTLC\
2\. ETF sends shares to HTLC\
3\. Reveal secret \
4a. HTLC -> ETF shares to AP \
4b. HTLC -> Basket to ETF
{% endtab %}

{% tab title="ETF FAIL" %}

<figure><img src="/files/sntHdWJ1PSAGTRYyvI9j" alt=""><figcaption></figcaption></figure>

1\. AP sends basket to HTLC\
2\. ETF sends shares to HTLC\
3\. T+1 fail\
4a. HTLC -> ETF shares to ETF\
4b. HTLC -> AP basket to AP
{% endtab %}

{% tab title="USD/GME" %}

<figure><img src="/files/rhECmLPhEmWzYUfl2Xng" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="USD/GME FAIL" %}

<figure><img src="/files/PRIWrAeLxB4sLcsgEXTU" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}


# Pricing

Futures Price = Spot Price + Carrying Costs + Storage Costs - Convenience Yield

Premium/Discount % = (Market Price − NAV) ÷ NAV × 100

NAV = (Market Value of All Securities + Cash & Equivalents − Fund Liabilities) ÷ Total Shares Outstanding

Net Asset Value

$$
\text{NAV} =
\frac{
\text{Value of Assets of a Share Class}
---------------------------------------

\text{Liabilities of the Share Class}
}{
\text{Number of Outstanding Shares of the Share Class}
}
$$

Bid-ask spread

Spread % = (Price − NAV) ÷ NAV × 100

Bond Investment Value

Sv (t) = Σ<sub>t=1</sub><sup>n</sup> c / (1 + r)<sup>t</sup> + p / (1 + r)<sup>n</sup>

P = par value\
r = discount rate\
C = coupon rate\
n = number periods to maturity

Bond price

Bond Price = C\* ((1-(1+r)^-n)/r )) + F/(1+r)^n\
F = Face / Par value of bond,\
r = Yield to maturity (YTM) and.\
n = No. of periods till maturity\
C= Periodic coupon payments

Bond Price = ∑ (Present Values of Cash Flows) + Present Value of Face Value

**Coupon Rate (%) =** Coupon **÷** Bond Par Value\
**Current Yield (%) =** Annual Coupon **÷** Bond Price\
**Current Yield =** (Coupon Rate **x** Par Value) **÷** Bond Quote


# ETFs

<table><thead><tr><th valign="top">Market participant</th><th valign="top">Economic incentive</th></tr></thead><tbody><tr><td valign="top">Buyer/seller of ETF shares</td><td valign="top">Buys ETF shares at a lower price and sells at a higher price later. </td></tr><tr><td valign="top">Trading venue</td><td valign="top">Earns revenue from transaction fees paid by market participants trading on their platform. Listing exchange also earns listing fees paid by ETF issuers. </td></tr><tr><td valign="top">Broker</td><td valign="top">Earns commissions by fulfilling client buy/sell orders through finding matches in the secondary market.</td></tr><tr><td valign="top">Market maker</td><td valign="top">Profits from spreads of their bid/ask quotes. Arbitrages between an ETF’s intrinsic value and its market price.</td></tr><tr><td valign="top">Lead market maker (LMM)</td><td valign="top">Profits from spreads of their bid/ask quotes. Arbitrages between an ETF’s intrinsic value and its market price. Receives economic incentives from the exchange, such as lower transaction fees and higher rebates.</td></tr><tr><td valign="top">Electronic market maker (EMM)</td><td valign="top">Captures arbitrage opportunities by using high-frequency trading algorithm.</td></tr><tr><td valign="top">Institutional sales and trading desk</td><td valign="top">Earns commissions by providing market making services to institutional clients for their large transactions.</td></tr><tr><td valign="top">Derivative trading desk</td><td valign="top">Maintains risk neutral of their total portfolio by trading a wide range of financial instruments, such as ETFs, swaps, and index futures. </td></tr><tr><td valign="top">Short seller of ETF shares</td><td valign="top">Profits from falling ETF share prices. Borrows ETF shares, sells them now, and buys back later at a lower price to return shares to the lender to make profits. </td></tr><tr><td valign="top"> Create-to-lend desk</td><td valign="top">Driven by clients’ demand of borrowing ETF shares. Profits from lending fees.</td></tr><tr><td valign="top"> Authorized participant (AP)</td><td valign="top">Acts as an agent for market makers and other liquidity providers to create/redeem ETF shares and earn commissions. Some APs also earn revenue through market making activities.</td></tr><tr><td valign="top"><p> ETF issuer</p><p> </p></td><td valign="top">Earns fees as a percentage of fund net assets.</td></tr></tbody></table>


# Synthetic

<figure><img src="/files/SbzPIaRaAfyY048xndm5" alt="" width="524"><figcaption></figcaption></figure>

RESOURCES

<https://www.justetf.com/uk/academy/synthetic-replication-of-etfs.html>


# Execution

#### Key takeaways

* ETF execution has evolved over the past few years with more options available to dealers&#x20;
* RFQ platforms are currently the most dominant method of ETF execution in Europe&#x20;
* An ETF’s liquidity profile is important to understanding how to execute efficiently&#x20;

<figure><img src="/files/cZbDHfoH2gZgH8eRfYWQ" alt=""><figcaption></figcaption></figure>

Commonly used execution strategies

Risk

* Buyside traders send a request for immediate execution with multiple liquidity providers put into competition.&#x20;
* Traders will then receive a quote – bid, offer or two-way – for the entire trade at once.  The risk transfer will take place immediately once the best price is selected by the trader, with the ETF liquidity provider taking on the risk of managing the position.&#x20;

Algorithms

* Buyside traders will appoint an automated trading algorithm to limit the impact of the execution.
* This can be particularly important for institutional investors looking to execute large trades efficiently.
* Algorithms will help break down large orders into more manageable trades and can be benchmarked to ETF price, fair value, volume or completion time.
* Risk exposure to market fluctuations until risk-transfer, the publication of NAV.

NAV

* Trading at NAV allows buyside traders to set an execution price benchmarked to an ETF’s future NAV.
* Dealers can send an entire order to multiple liquidity providers and receive quotes priced at a ‘spread’ to the ETF's future NAV.
* The final execution price is not known until the official NAV is published at the end of the day. Traders are exposed to market fluctuations until then.

Forward benchmark &#x20;

* Buyside traders can request an execution to be benchmarked to an ETF’s price at a specific time which is priced at ‘spread’ to the targeted benchmark.
* Liquidity providers can trade the entire order at the targeted time and are exposed to market fluctuations until this point.

Selecting an execution strategy

There is a diverse array of execution strategies available to dealers when it comes to trading European ETFs, each with its risks and benefits and these must match the underlying investment objectives.

Different execution strategies allow traders to access different components of European ETF liquidity.

However, the sheer number of ETF listings across various exchanges has created a fragmented market in Europe where many ETFs trade very little on the secondary market.

Because ETF volumes on the secondary market are lower versus the US, buyside traders currently favour executing ETF trades via RFQ platforms where they benefit from competitive pricing and immediacy of execution, instead of relying on on-exchange liquidity which is typically thin.

This development is slowly starting to change with the rise of retail adoption in European ETFs and the introduction of ETF algorithms, however, there is still a long way to go before volumes shift on-exchange.

RESOURCES

<https://www.etfstream.com/education/trading/types-of-etf-execution>

<br>


# Phantom shares

Problem: System allows more ownership claims (entitlements, E) than real shares (S). This inflates phantom supply, suppressing price.

Why:

1. Cash-in-lieu = ETF creation without delivering stock.
2. CNS netting = hides the resulting failure-to-deliver in pooled obligations.
3. Phantom entitlements are treated as "locatable" inventory.
4. Loop repeats using its own IOUs as feedstock.

Result: E > S. The gap (E - S) is phantom supply. Price discovery breaks. Risk accumulates in hidden failures until forced settlement (buy‑in or squeeze).

COUNTERPARTIES

DTC: Holds real shares (static at 100)

AP: Initiates creation, uses cash-in-lieu

ETF: Issues shares, books receivables

NSCC CNS: Netting engine that hides failures

Broker: Credits phantom entitlements to accounts

Market: Where phantom claims circulate

### How It Works

**Setup:** GME has 100 real shares at DTC. All entitlements start matched 1:1.

**The Loop:**

1. **AP needs GME** — wants to create ETF basket requiring 10 GME
2. **Can't locate** — no shares available to borrow/deliver
3. **Pays cash** — $1000 substituted for 10 GME (cash-in-lieu)
4. **ETF created** — fund issues shares, books "GME receivable" (IOU)
5. **Phantom born** — buyer's broker credits 10 GME exposure. Now 110 entitlements, still 100 real shares. Gap = 10 phantom.
6. **CNS nets** — NSCC pools all obligations, anonymizes the fail, resets 13-day clock. Loop repeats.

***

### Flow of Funds (Creation)

```
Buyer $1000 → Broker → Market Maker → AP
                                      ↓
                              Cash-in-lieu $1000 → ETF Custodian
                                      ↓
                              ETF shares ← ETF Issuer (books GME receivable)
                                      ↓
                              ETF shares → MM → Broker → Buyer
                                      ↓
                              Buyer holds claim on GME exposure
                              GME never moved. Phantom created.
```

***

### How Each Factor Contributes

| Mechanism              | Role in Phantom Creation                                                                            |
| ---------------------- | --------------------------------------------------------------------------------------------------- |
| **Cash-in-lieu**       | Decouples creation from delivery. ETF shares minted without underlying.                             |
| **Short selling**      | Each short creates +1 entitlement (buyer) while original holder keeps theirs. E = S + SI.           |
| **CNS netting**        | Pools gross obligations → net. Hides which trade failed. Reduces forced delivery to \~10% of gross. |
| **Derivatives**        | Options MM exception: can naked short to hedge. Married puts reset FTD clocks.                      |
| **OTC/Dark pools**     | 60%+ volume off-exchange. Less transparency. Easier to internalize without delivery.                |
| **Securities lending** | Same share lent multiple times. Phantom entitlements become "locatable" for next short.             |
| **T+1 settlement**     | Rolling window lets obligations persist. New creates stack before old ones settle.                  |

***

### CNS Netting: The Enabler

**Without CNS:**

* Broker A owes 100 shares to Broker B
* Broker B owes 100 shares to Broker A
* **Both must deliver 100 shares each**

**With CNS (90% netting):**

* NSCC nets: 100 - 100 = 0
* **Zero shares physically move**
* Both sides credit entitlements to customers anyway

**Result:** Gross trading volume explodes while physical delivery stays minimal. Entitlements multiply. Phantoms accumulate. The gap between E and S widens until forced buy-in (rare) or squeeze.

***

### The Recursive Force

```
Cash-in-lieu creates phantom
        ↓
Phantom credited as real entitlement
        ↓
Entitlement lendable/locatable
        ↓
Borrowed for next short sale
        ↓
Short sale creates another entitlement
        ↓
Demand triggers more ETF creates
        ↓
More cash-in-lieu → more phantoms
        ↓
        ↺ LOOP
```

**CNS ensures the loop never breaks** by masking delivery failures in a pooled net position.

<details>

<summary>index.html</summary>

{% code expandable="true" %}

```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>GME Phantom Shares via ETF Cash-in-Lieu + CNS</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font:11px Arial,sans-serif;background:#f0f0f0;color:#000;padding:8px}
.wrap{max-width:1050px;margin:0 auto;background:#fff;border:1px solid #999;padding:10px}
h1{font-size:12px;background:#333;color:#fff;padding:6px 8px;margin:-10px -10px 10px -10px}
.grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:8px}
.grid2{display:grid;grid-template-columns:2fr 1fr;gap:8px;margin-bottom:8px}
.box{border:1px solid #000;background:#fff}
.box-head{background:#ddd;border-bottom:1px solid #000;padding:4px 6px;font-weight:700;font-size:10px}
.box-body{padding:6px}
.row{display:flex;justify-content:space-between;padding:2px 0;border-bottom:1px solid #eee}
.row:last-child{border-bottom:none}
.row.head{font-weight:700;background:#f5f5f5;padding:4px 0;border-bottom:1px solid #ccc}
.row.total{background:#ffffcc;font-weight:700;border-top:2px solid #000;margin-top:4px;padding-top:4px}
.row.warn span:last-child{color:#c00}
.val{font-weight:700}
.small{font-size:10px;color:#666}
.controls{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:8px;padding:6px;background:#f9f9f9;border:1px solid #ccc}
button{font:11px Arial,sans-serif;padding:5px 12px;border:1px solid #000;background:#fff;cursor:pointer}
button:hover{background:#000;color:#fff}
input{font:11px Arial,sans-serif;width:60px;padding:3px;border:1px solid #999;text-align:right}
label{font-size:10px;display:flex;align-items:center;gap:3px}
.chain{display:flex;align-items:center;justify-content:center;gap:4px;padding:8px;background:#f5f5f5;border:1px solid #ccc;margin-bottom:8px}
.step{padding:4px 8px;border:1px solid #000;font-size:10px;background:#fff}
.step.on{background:#000;color:#fff}
.arrow{font-size:12px}
.meters{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:8px}
.meter{border:1px solid #000;padding:6px;text-align:center;background:#fff}
.meter-lbl{font-size:9px;color:#666;margin-bottom:2px}
.meter-val{font-size:20px;font-weight:700}
.meter-val.warn{color:#c00}
.meter-bar{height:4px;background:#eee;margin-top:4px;border:1px solid #ccc}
.meter-fill{height:100%;background:#000;width:0%;transition:width .2s}
.meter-fill.warn{background:#c00}
.arena{border:1px solid #000;height:140px;position:relative;background:#fafafa;margin-bottom:8px}
.pool{position:absolute;bottom:0;width:100%;display:flex;justify-content:space-around;padding:8px}
.poolbox{border:1px solid #000;background:#fff;width:30%;padding:8px;text-align:center}
.poolbox-lbl{font-size:9px;color:#666}
.poolbox-val{font-size:14px;font-weight:700}
.token{position:absolute;width:14px;height:14px;border:1px solid #000;font-size:9px;display:flex;align-items:center;justify-content:center;transition:all .4s ease-out}
.t-cash{background:#cfc}
.t-ent{background:#ffc;border-style:dashed}
.t-ftd{background:#fcc}
.flow{position:absolute;top:35%;left:50%;transform:translate(-50%,-50%);font-weight:700;font-size:11px;opacity:0;transition:opacity .15s}
.flow.on{opacity:1}
.status{position:absolute;top:6px;left:8px;font-size:10px}
.log{border:1px solid #000;max-height:120px;overflow-y:auto}
.log table{width:100%;border-collapse:collapse;font-size:10px}
.log th,.log td{border:1px solid #ccc;padding:3px 5px}
.log th{background:#ddd;position:sticky;top:0}
.log td{background:#fff}
.log .r{text-align:right}
.formula{font-size:10px;color:#666;padding:6px;background:#f9f9f9;border:1px solid #ccc;margin-top:8px}
.formula b{color:#000}
</style>
</head>
<body>
<div class="wrap">
<h1>GME PHANTOM SHARES — ETF CASH-IN-LIEU + NSCC CNS NETTING</h1>

<div class="controls">
  <button id="stepBtn">Step</button>
  <button id="runBtn">Run</button>
  <button id="stopBtn">Stop</button>
  <button id="resetBtn">Reset</button>
  <label>Basket:<input id="pB" type="number" value="10" min="1"></label>
  <label>Cash$:<input id="pC" type="number" value="1000" min="0"></label>
  <label>Cover%:<input id="pCov" type="number" value="0" min="0" max="100"></label>
  <label>Net%:<input id="pNet" type="number" value="90" min="0" max="100"></label>
  <label>Speed:<input id="pSpd" type="number" value="400" min="50"></label>
  <span class="small">Cycle: <b id="cyc">0</b></span>
</div>

<div class="chain">
  <div class="step" data-i="0">AP needs GME</div><div class="arrow">→</div>
  <div class="step" data-i="1">Can't locate</div><div class="arrow">→</div>
  <div class="step" data-i="2">Pays cash</div><div class="arrow">→</div>
  <div class="step" data-i="3">ETF created</div><div class="arrow">→</div>
  <div class="step" data-i="4">Phantom born</div><div class="arrow">→</div>
  <div class="step" data-i="5">CNS nets</div><div class="arrow">↺</div>
</div>

<div class="meters">
  <div class="meter"><div class="meter-lbl">REAL SHARES (S)</div><div class="meter-val" id="mS">100</div><div class="meter-bar"><div class="meter-fill" id="bS"></div></div></div>
  <div class="meter"><div class="meter-lbl">ENTITLEMENTS (E)</div><div class="meter-val" id="mE">100</div><div class="meter-bar"><div class="meter-fill" id="bE"></div></div></div>
  <div class="meter"><div class="meter-lbl">PHANTOM (E-S)</div><div class="meter-val warn" id="mP">0</div><div class="meter-bar"><div class="meter-fill warn" id="bP"></div></div></div>
  <div class="meter"><div class="meter-lbl">RECEIVABLE</div><div class="meter-val warn" id="mR">0</div><div class="meter-bar"><div class="meter-fill warn" id="bR"></div></div></div>
  <div class="meter"><div class="meter-lbl">CNS NET DELIV</div><div class="meter-val" id="mN">0</div><div class="meter-bar"><div class="meter-fill" id="bN"></div></div></div>
</div>

<div class="grid2">
  <div class="arena" id="arena">
    <div class="status" id="status">Ready</div>
    <div class="flow" id="flow"></div>
    <div class="pool">
      <div class="poolbox"><div class="poolbox-lbl">DTC VAULT</div><div class="poolbox-val"><span id="pDtc">100</span> real</div></div>
      <div class="poolbox"><div class="poolbox-lbl">CNS POOL</div><div class="poolbox-val"><span id="pCns">0</span> receivable</div></div>
      <div class="poolbox"><div class="poolbox-lbl">MARKET</div><div class="poolbox-val"><span id="pMkt">100</span> claims</div></div>
    </div>
  </div>
  <div class="log" id="logWrap">
    <table><thead><tr><th>t</th><th>Action</th><th class="r">ΔE</th><th class="r">ΔR</th><th class="r">Net</th></tr></thead><tbody id="log"></tbody></table>
  </div>
</div>

<div class="grid">
  <div class="box">
    <div class="box-head">A. SHARES OUTSTANDING</div>
    <div class="box-body">
      <div class="row"><span>GME Issued (S)</span><span class="val" id="aS">100</span></div>
      <div class="row"><span>Held at DTC</span><span class="val" id="aDtc">100</span></div>
      <div class="row"><span>Entitlements (E)</span><span class="val" id="aE">100</span></div>
      <div class="row"><span>— Real-backed</span><span id="aReal">100</span></div>
      <div class="row warn"><span>— Phantom</span><span id="aPhantom">0</span></div>
      <div class="row total"><span>Overage %</span><span id="aOver">0%</span></div>
    </div>
  </div>
  <div class="box">
    <div class="box-head">B. NSCC CNS LEDGER</div>
    <div class="box-body">
      <div class="row"><span>Gross Receivable</span><span class="val" id="bGross">0</span></div>
      <div class="row"><span>Netting Factor</span><span id="bNetF">90%</span></div>
      <div class="row"><span>Net Required Delivery</span><span class="val" id="bNet">0</span></div>
      <div class="row"><span>Cash Collateral</span><span id="bCash">$0</span></div>
      <div class="row total warn"><span>Hidden FTDs</span><span id="bFtd">0</span></div>
    </div>
  </div>
  <div class="box">
    <div class="box-head">C. ETF FUND BALANCE</div>
    <div class="box-body">
      <div class="row"><span>GME Shares Held</span><span id="cHeld">0</span></div>
      <div class="row"><span>GME Receivable</span><span class="val" id="cRecv">0</span></div>
      <div class="row"><span>Cash-in-Lieu</span><span id="cCash">$0</span></div>
      <div class="row"><span>Baskets Created</span><span id="cBask">0</span></div>
      <div class="row total"><span>NAV Exposure</span><span id="cNav">0</span></div>
    </div>
  </div>
</div>

<div class="grid">
  <div class="box">
    <div class="box-head">D. MARKET BALANCE</div>
    <div class="box-body">
      <div class="row"><span>Assets (Real S)</span><span id="dAsset">100</span></div>
      <div class="row"><span>Liabilities (E)</span><span id="dLiab">100</span></div>
      <div class="row warn"><span>Unmatched Claims</span><span id="dUnmatch">0</span></div>
      <div class="row total"><span>Integrity Gap</span><span id="dGap">0%</span></div>
    </div>
  </div>
  <div class="box">
    <div class="box-head">E. CORE PARTIES</div>
    <div class="box-body small">
      <div class="row"><span>DTC</span><span>Depository (real shares)</span></div>
      <div class="row"><span>NSCC CNS</span><span>Nets settlements</span></div>
      <div class="row"><span>AP</span><span>Creates/redeems ETF</span></div>
      <div class="row"><span>ETF Issuer</span><span>Issues shares, books recv</span></div>
      <div class="row"><span>MM/Broker</span><span>Routes orders, lends</span></div>
    </div>
  </div>
  <div class="box">
    <div class="box-head">F. CORE DATA</div>
    <div class="box-body small">
      <div class="row"><span>S (Shares Outstanding)</span><span>Fixed real supply</span></div>
      <div class="row"><span>E (Entitlements)</span><span>S + Short Interest</span></div>
      <div class="row"><span>SI (Short Interest)</span><span>Borrowed claims</span></div>
      <div class="row"><span>Phantom = E - S</span><span>Excess claims</span></div>
      <div class="row"><span>FTD/Receivable</span><span>Undelivered stock</span></div>
    </div>
  </div>
</div>

<div class="formula">
  <b>RECURSION:</b> Cash-in-lieu → E<sub>t+1</sub> = E<sub>t</sub> + Basket (S unchanged) → Phantom grows → 
  Claims lendable → More shorts → More creates → <b>Loop ↺</b><br>
  <b>CNS MASK:</b> Net = Gross × (1 - NetFactor) — Netting hides gross obligations, reducing forced delivery
</div>

</div>

<script>
const $=id=>document.getElementById(id);
const arena=$('arena');
let S={s:100,e:100,r:0,cash:0,bask:0,t:0,tick:0,busy:false,run:false};
let timer=null;

function P(){
  return{
    b:Math.max(1,+$('pB').value||10),
    c:Math.max(0,+$('pC').value||1000),
    cov:Math.max(0,Math.min(100,+$('pCov').value||0)),
    net:Math.max(0,Math.min(100,+$('pNet').value||90)),
    spd:Math.max(50,+$('pSpd').value||400)
  };
}

function chain(i){
  document.querySelectorAll('.step').forEach(s=>s.classList.remove('on'));
  const el=document.querySelector('.step[data-i="'+i+'"]');
  if(el)el.classList.add('on');
}

function flash(t){
  const f=$('flow');f.textContent=t;f.classList.add('on');
  setTimeout(()=>f.classList.remove('on'),200);
}

function tok(cls,ch,x,y){
  const d=document.createElement('div');
  d.className='token '+cls;d.textContent=ch;
  d.style.left=x+'px';d.style.top=y+'px';
  arena.appendChild(d);return d;
}

function mv(d,x,y){
  return new Promise(r=>{
    setTimeout(()=>{d.style.left=x+'px';d.style.top=y+'px'},10);
    setTimeout(r,420);
  });
}

function rm(d){d.style.opacity='0';setTimeout(()=>d.remove(),200)}

function log(a,dE,dR,net){
  const tr=document.createElement('tr');
  tr.innerHTML=`<td>${S.t}</td><td>${a}</td><td class="r">${dE>=0?'+':''}${dE}</td><td class="r">${dR>=0?'+':''}${dR}</td><td class="r">${net}</td>`;
  $('log').prepend(tr);
}

function calcNet(){
  const{net}=P();
  return Math.round(S.r*(1-net/100));
}

function upd(){
  const p=Math.max(0,S.e-S.s);
  const n=calcNet();
  const{net}=P();

  $('cyc').textContent=Math.floor(S.tick/6);
  $('mS').textContent=S.s;
  $('mE').textContent=S.e;
  $('mP').textContent=p;
  $('mR').textContent=S.r;
  $('mN').textContent=n;

  $('bS').style.width='100%';
  $('bE').style.width=Math.min(100,S.e/S.s*50)+'%';
  $('bP').style.width=Math.min(100,p/S.s*100)+'%';
  $('bR').style.width=Math.min(100,S.r/S.s*100)+'%';
  $('bN').style.width=Math.min(100,n/S.s*100)+'%';

  $('pDtc').textContent=S.s;
  $('pCns').textContent=S.r;
  $('pMkt').textContent=S.e;

  // A
  $('aS').textContent=S.s;
  $('aDtc').textContent=S.s;
  $('aE').textContent=S.e;
  $('aReal').textContent=S.s;
  $('aPhantom').textContent=p;
  $('aOver').textContent=Math.round((S.e-S.s)/S.s*100)+'%';

  // B
  $('bGross').textContent=S.r;
  $('bNetF').textContent=net+'%';
  $('bNet').textContent=n;
  $('bCash').textContent='$'+S.cash;
  $('bFtd').textContent=S.r;

  // C
  $('cHeld').textContent=0;
  $('cRecv').textContent=S.r;
  $('cCash').textContent='$'+S.cash;
  $('cBask').textContent=S.bask;
  $('cNav').textContent=S.r;

  // D
  $('dAsset').textContent=S.s;
  $('dLiab').textContent=S.e;
  $('dUnmatch').textContent=p;
  $('dGap').textContent=Math.round(p/S.s*100)+'%';
}

async function step(){
  if(S.busy)return;
  S.busy=true;
  const{b,c,cov}=P();
  const i=S.tick%6;
  chain(i);

  if(i===0){
    $('status').textContent='AP needs '+b+' GME for basket';
    flash('NEED GME');
    log('AP initiates create',0,0,calcNet());
  }
  if(i===1){
    $('status').textContent='Locate fails — GME unavailable';
    flash('LOCATE FAIL');
    log('Cannot locate GME',0,0,calcNet());
  }
  if(i===2){
    $('status').textContent='AP pays $'+c+' cash-in-lieu';
    flash('$'+c+' CASH');
    const t=tok('t-cash','$',420,15);
    await mv(t,420,70);rm(t);
    S.cash+=c;
    log('Cash-in-lieu delivered',0,0,calcNet());
  }
  if(i===3){
    $('status').textContent='ETF created — books GME receivable';
    flash('ETF ISSUED');
    S.bask++;
    log('ETF shares issued',0,0,calcNet());
  }
  if(i===4){
    $('status').textContent='+'+b+' phantom entitlements';
    flash('+'+b+' PHANTOM');
    S.e+=b;S.r+=b;
    for(let k=0;k<Math.min(4,b);k++){
      const t=tok('t-ent','?',380+k*20,15);
      mv(t,500+k*18,70).then(()=>setTimeout(()=>rm(t),600));
    }
    log('Entitlements created',b,b,calcNet());
  }
  if(i===5){
    const covered=Math.round(S.r*cov/100);
    S.r=Math.max(0,S.r-covered);
    $('status').textContent='CNS nets — cover '+cov+'%';
    flash('CNS NETS');
    log('CNS netting cycle',0,-covered,calcNet());
  }

  S.t++;S.tick++;
  upd();
  S.busy=false;
}

async function loop(){
  if(!S.run)return;
  await step();
  timer=setTimeout(loop,P().spd);
}

function run(){if(S.run)return;S.run=true;loop()}
function stop(){S.run=false;clearTimeout(timer)}
function reset(){
  stop();
  S={s:100,e:100,r:0,cash:0,bask:0,t:0,tick:0,busy:false,run:false};
  $('log').innerHTML='';
  $('status').textContent='Ready';
  chain(-1);upd();
}

$('stepBtn').onclick=step;
$('runBtn').onclick=run;
$('stopBtn').onclick=stop;
$('resetBtn').onclick=reset;
upd();
</script>
</body>
</html>
```

{% endcode %}

v1

</details>

<details>

<summary>simple</summary>

{% code expandable="true" %}

```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>GME Phantom Claims (Cash-in-Lieu + CNS)</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font:12px Arial,Helvetica,sans-serif;background:#f4f4f4;color:#000;padding:10px}
.wrap{max-width:900px;margin:0 auto;background:#fff;border:2px solid #000}
.hdr{background:#000;color:#fff;padding:10px 12px;font-weight:700}
.main{padding:10px 12px}
.controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:8px;background:#f0f0f0;border:1px solid #000;margin-bottom:10px}
button,input{font:12px Arial,Helvetica,sans-serif;border:1px solid #000;background:#fff;padding:6px 10px}
button:hover{background:#000;color:#fff}
input{width:80px;text-align:right}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.kpi{border:1px solid #000}
.kpi .t{background:#e9e9e9;border-bottom:1px solid #000;padding:6px 8px;font-size:11px;font-weight:700}
.kpi .v{padding:10px 8px;font-size:22px;font-weight:700;text-align:center}
.kpi .v.bad{background:#fff0f0;color:#c00}
.panel{border:1px solid #000;margin-bottom:10px}
.panel .t{background:#000;color:#fff;padding:6px 8px;font-size:11px;font-weight:700}
.panel .b{padding:8px}
.flow{font-size:11px;line-height:1.4}
.flow .line{padding:3px 0;border-top:1px solid #eee}
.flow .line:first-child{border-top:none}
.note{background:#fffbe6;border:1px solid #000;padding:8px;font-size:11px;line-height:1.35}
.log{border:1px solid #000;max-height:160px;overflow:auto}
table{width:100%;border-collapse:collapse;font-size:11px}
th,td{border:1px solid #ccc;padding:4px 6px}
th{background:#eee;position:sticky;top:0;text-align:left}
td.r{text-align:right}
.bad{color:#c00;font-weight:700}
.small{font-size:11px;color:#333}
</style>
</head>
<body>
<div class="wrap">
  <div class="hdr">GME PHANTOM CLAIMS — ETF CASH-IN-LIEU + CNS NETTING</div>
  <div class="main">

    <div class="controls">
      <button id="stepBtn">Step</button>
      <button id="runBtn">Run</button>
      <button id="stopBtn">Stop</button>
      <button id="resetBtn">Reset</button>
      <span class="small">Basket GME</span><input id="pB" type="number" value="10" min="1">
      <span class="small">Cash $</span><input id="pC" type="number" value="1000" min="0">
      <span class="small">CNS net %</span><input id="pNet" type="number" value="90" min="0" max="100">
      <span class="small">Cycle</span><span id="cyc" class="small" style="font-weight:700">0</span>
    </div>

    <div class="kpis">
      <div class="kpi"><div class="t">REAL SHARES (S)</div><div class="v" id="kS">100</div></div>
      <div class="kpi"><div class="t">TOTAL CLAIMS (E)</div><div class="v" id="kE">100</div></div>
      <div class="kpi"><div class="t">ETF IOU (RECEIVABLE)</div><div class="v bad" id="kR">0</div></div>
      <div class="kpi"><div class="t">PHANTOM (E − S)</div><div class="v bad" id="kP">0</div></div>
    </div>

    <div class="panel">
      <div class="t">FLOW OF FUNDS (CREATION)</div>
      <div class="b flow">
        <div class="line"><b>1)</b> Buyer → Broker → MM/AP (cash)</div>
        <div class="line"><b>2)</b> AP pays <span id="cashLbl" class="bad">$1000</span> cash-in-lieu → ETF Custodian</div>
        <div class="line"><b>3)</b> ETF Issuer mints ETF shares → AP/MM → Broker → Buyer</div>
        <div class="line"><b>Missing:</b> AP does <span class="bad">not</span> deliver GME; ETF books “<span id="iouLbl" class="bad">10 GME IOU</span>”</div>
      </div>
    </div>

    <div class="note" id="status">Ready.</div>

    <div class="log" style="margin-top:10px">
      <table>
        <thead><tr><th>t</th><th>Action</th><th class="r">ΔClaims</th><th class="r">ΔIOU</th><th class="r">CNS net due</th></tr></thead>
        <tbody id="log"></tbody>
      </table>
    </div>

  </div>
</div>

<script>
const $=id=>document.getElementById(id);

let st={ S:100, E:100, R:0, t:0, phase:0, run:false, timer:null };

function P(){
  return{
    b:Math.max(1, +$('pB').value||10),
    c:Math.max(0, +$('pC').value||1000),
    net:Math.max(0, Math.min(100, +$('pNet').value||90))
  };
}

function netDue(){
  const { net } = P();
  return Math.round(st.R * (1 - net/100));
}

function logRow(action,dE,dR,net){
  const tr=document.createElement('tr');
  tr.innerHTML=`<td>${st.t}</td><td>${action}</td><td class="r">${dE>=0?'+':''}${dE}</td><td class="r">${dR>=0?'+':''}${dR}</td><td class="r">${net}</td>`;
  $('log').prepend(tr);
}

function upd(){
  const { b,c } = P();
  const phantom=Math.max(0, st.E - st.S);

  $('kS').textContent=st.S;
  $('kE').textContent=st.E;
  $('kR').textContent=st.R;
  $('kP').textContent=phantom;

  $('cashLbl').textContent='$'+c;
  $('iouLbl').textContent=b+' GME IOU';
  $('cyc').textContent=Math.floor(st.t/4);
}

function step(){
  const { b,c,net } = P();
  const i = st.phase % 4;

  if(i===0){
    $('status').textContent=`AP needs ${b} GME for ETF creation; can't locate/deliver.`;
    logRow('Need GME (no locate)',0,0,netDue());
  }
  if(i===1){
    $('status').textContent=`AP pays $${c} cash-in-lieu; creation continues anyway.`;
    logRow('Cash-in-lieu paid',0,0,netDue());
  }
  if(i===2){
    st.E += b;
    st.R += b;
    $('status').textContent=`ETF mints shares; ETF now has a ${b} GME IOU; market claims +${b}.`;
    logRow('Mint vs IOU',b,b,netDue());
  }
  if(i===3){
    const nd = netDue();
    $('status').textContent=`CNS nets trades. Net shares due now ≈ ${nd} (netting % = ${net}%).`;
    logRow('CNS netting',0,0,nd);
  }

  st.t++;
  st.phase++;
  upd();
}

function run(){
  if(st.run) return;
  st.run=true;
  (function loop(){
    if(!st.run) return;
    step();
    st.timer=setTimeout(loop,450);
  })();
}

function stop(){ st.run=false; clearTimeout(st.timer); }

function reset(){
  stop();
  st={ S:100, E:100, R:0, t:0, phase:0, run:false, timer:null };
  $('log').innerHTML='';
  $('status').textContent='Ready.';
  upd();
}

$('stepBtn').onclick=step;
$('runBtn').onclick=run;
$('stopBtn').onclick=stop;
$('resetBtn').onclick=reset;

upd();
</script>
</body>
</html>

```

{% endcode %}

</details>

<details>

<summary>simple</summary>

{% code expandable="true" %}

```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>GME Phantom Claims (Cash-in-Lieu + CNS)</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font:12px Arial,Helvetica,sans-serif;background:#f4f4f4;color:#000;padding:10px}
.wrap{max-width:900px;margin:0 auto;background:#fff;border:2px solid #000}
.hdr{background:#000;color:#fff;padding:10px 12px;font-weight:700}
.main{padding:10px 12px}
.controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:8px;background:#f0f0f0;border:1px solid #000;margin-bottom:10px}
button,input{font:12px Arial,Helvetica,sans-serif;border:1px solid #000;background:#fff;padding:6px 10px}
button:hover{background:#000;color:#fff}
input{width:80px;text-align:right}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.kpi{border:1px solid #000}
.kpi .t{background:#e9e9e9;border-bottom:1px solid #000;padding:6px 8px;font-size:11px;font-weight:700}
.kpi .v{padding:10px 8px;font-size:22px;font-weight:700;text-align:center}
.kpi .v.bad{background:#fff0f0;color:#c00}
.panel{border:1px solid #000;margin-bottom:10px}
.panel .t{background:#000;color:#fff;padding:6px 8px;font-size:11px;font-weight:700}
.panel .b{padding:8px}
.flow{font-size:11px;line-height:1.4}
.flow .line{padding:3px 0;border-top:1px solid #eee}
.flow .line:first-child{border-top:none}
.note{background:#fffbe6;border:1px solid #000;padding:8px;font-size:11px;line-height:1.35}
.log{border:1px solid #000;max-height:160px;overflow:auto}
table{width:100%;border-collapse:collapse;font-size:11px}
th,td{border:1px solid #ccc;padding:4px 6px}
th{background:#eee;position:sticky;top:0;text-align:left}
td.r{text-align:right}
.bad{color:#c00;font-weight:700}
.small{font-size:11px;color:#333}
</style>
</head>
<body>
<div class="wrap">
  <div class="hdr">GME PHANTOM CLAIMS — ETF CASH-IN-LIEU + CNS NETTING</div>
  <div class="main">

    <div class="controls">
      <button id="stepBtn">Step</button>
      <button id="runBtn">Run</button>
      <button id="stopBtn">Stop</button>
      <button id="resetBtn">Reset</button>
      <span class="small">Basket GME</span><input id="pB" type="number" value="10" min="1">
      <span class="small">Cash $</span><input id="pC" type="number" value="1000" min="0">
      <span class="small">CNS net %</span><input id="pNet" type="number" value="90" min="0" max="100">
      <span class="small">Cycle</span><span id="cyc" class="small" style="font-weight:700">0</span>
    </div>

    <div class="kpis">
      <div class="kpi"><div class="t">REAL SHARES (S)</div><div class="v" id="kS">100</div></div>
      <div class="kpi"><div class="t">TOTAL CLAIMS (E)</div><div class="v" id="kE">100</div></div>
      <div class="kpi"><div class="t">ETF IOU (RECEIVABLE)</div><div class="v bad" id="kR">0</div></div>
      <div class="kpi"><div class="t">PHANTOM (E − S)</div><div class="v bad" id="kP">0</div></div>
    </div>

    <div class="panel">
      <div class="t">FLOW OF FUNDS (CREATION)</div>
      <div class="b flow">
        <div class="line"><b>1)</b> Buyer → Broker → MM/AP (cash)</div>
        <div class="line"><b>2)</b> AP pays <span id="cashLbl" class="bad">$1000</span> cash-in-lieu → ETF Custodian</div>
        <div class="line"><b>3)</b> ETF Issuer mints ETF shares → AP/MM → Broker → Buyer</div>
        <div class="line"><b>Missing:</b> AP does <span class="bad">not</span> deliver GME; ETF books “<span id="iouLbl" class="bad">10 GME IOU</span>”</div>
      </div>
    </div>

    <div class="note" id="status">Ready.</div>

    <div class="log" style="margin-top:10px">
      <table>
        <thead><tr><th>t</th><th>Action</th><th class="r">ΔClaims</th><th class="r">ΔIOU</th><th class="r">CNS net due</th></tr></thead>
        <tbody id="log"></tbody>
      </table>
    </div>

  </div>
</div>

<script>
const $=id=>document.getElementById(id);

let st={ S:100, E:100, R:0, t:0, phase:0, run:false, timer:null };

function P(){
  return{
    b:Math.max(1, +$('pB').value||10),
    c:Math.max(0, +$('pC').value||1000),
    net:Math.max(0, Math.min(100, +$('pNet').value||90))
  };
}

function netDue(){
  const { net } = P();
  return Math.round(st.R * (1 - net/100));
}

function logRow(action,dE,dR,net){
  const tr=document.createElement('tr');
  tr.innerHTML=`<td>${st.t}</td><td>${action}</td><td class="r">${dE>=0?'+':''}${dE}</td><td class="r">${dR>=0?'+':''}${dR}</td><td class="r">${net}</td>`;
  $('log').prepend(tr);
}

function upd(){
  const { b,c } = P();
  const phantom=Math.max(0, st.E - st.S);

  $('kS').textContent=st.S;
  $('kE').textContent=st.E;
  $('kR').textContent=st.R;
  $('kP').textContent=phantom;

  $('cashLbl').textContent='$'+c;
  $('iouLbl').textContent=b+' GME IOU';
  $('cyc').textContent=Math.floor(st.t/4);
}

function step(){
  const { b,c,net } = P();
  const i = st.phase % 4;

  if(i===0){
    $('status').textContent=`AP needs ${b} GME for ETF creation; can't locate/deliver.`;
    logRow('Need GME (no locate)',0,0,netDue());
  }
  if(i===1){
    $('status').textContent=`AP pays $${c} cash-in-lieu; creation continues anyway.`;
    logRow('Cash-in-lieu paid',0,0,netDue());
  }
  if(i===2){
    st.E += b;
    st.R += b;
    $('status').textContent=`ETF mints shares; ETF now has a ${b} GME IOU; market claims +${b}.`;
    logRow('Mint vs IOU',b,b,netDue());
  }
  if(i===3){
    const nd = netDue();
    $('status').textContent=`CNS nets trades. Net shares due now ≈ ${nd} (netting % = ${net}%).`;
    logRow('CNS netting',0,0,nd);
  }

  st.t++;
  st.phase++;
  upd();
}

function run(){
  if(st.run) return;
  st.run=true;
  (function loop(){
    if(!st.run) return;
    step();
    st.timer=setTimeout(loop,450);
  })();
}

function stop(){ st.run=false; clearTimeout(st.timer); }

function reset(){
  stop();
  st={ S:100, E:100, R:0, t:0, phase:0, run:false, timer:null };
  $('log').innerHTML='';
  $('status').textContent='Ready.';
  upd();
}

$('stepBtn').onclick=step;
$('runBtn').onclick=run;
$('stopBtn').onclick=stop;
$('resetBtn').onclick=reset;

upd();
</script>
</body>
</html>

```

{% endcode %}

</details>


# Arbitrage

PREMIUM=CREATE+SELL

-buy underlying basket

-deliver underlying basket to ETF

-receive ETF shares

-sell etf shares

DISCOUNT=BUY+REDEEM

-buy etf shares

-deliver etf shares

-receive underlying basket

-sell underlying basket

**Maintaining fair value through arbitrage**

Arbitrage is a profit opportunity that helps ensure an ETF’s share price in the secondary market remains tightly correlated to the value of the securities held in the ETF portfolio. To the extent that an ETF’s share price strays from the fair value of its portfolio securities, APs will “arbitrage” the difference.

If the market price of the ETF is above its NAV, an AP could purchase the underlying basket of securities and short-sell<sup>1</sup> the ETF. Later the AP will execute a creation event, with the new ETF shares covering the short-sell position. The opposite occurs when the market price of the ETF is below its NAV. In this case, the AP would buy the ETF and short-sell the underlying basket of securities, and later execute a redemption event to cover the short position in the underlying basket.

<figure><img src="/files/kjRXYXBhMSA1bWq2lNCz" alt="" width="563"><figcaption></figcaption></figure>

PREMIUM=CREATE+SELL

DISCOUNT=BUY+REDEEM

Spread % = (Price − NAV) ÷ NAV × 100

Create to lend

<figure><img src="/files/EhTYCfJf9pbq7TMOnvTd" alt="" width="375"><figcaption></figcaption></figure>

RESOURCES

[Authorised participants and market makers](https://www.blackrock.com/au/insights/ishares/authorised-participants-and-market-makers)

[ETF Creation/Redemption Process: Behind the Scenes](https://www.wisdomtree.com/investments/blog/2020/04/23/etf-creation-redemption-process-behind-the-scenes)

<https://www.ssga.com/us/en/intermediary/resources/education/understanding-the-etf-liquidity-ecosystem>

<https://www.rexshares.com/etfs-under-the-hood/>


# Creation

Creation

1. AP buys creation basket of ETF’s underlying securities
2. AP delivers creation basket of securities to ETF
3. AP receives ETF’s underlying securities
4. AP sells ETF’s underlying securities

**Q: Why create?** \
A: Fill orders / Create inventory / Take advantage of arbitrage opportunities

<mark style="color:red;">**Step 1**</mark> The Investor places an order to buy ETF shares on the secondary market:\
• If there are enough shares in the market to satisfy the order, the order is filled.\
• If there are not enough shares, the creation process is kicked off in the primary market.\ <mark style="color:red;">**Step 2**</mark> The AP acquires the securities that make up the ETF and delivers them to the ETF sponsor.\ <mark style="color:red;">**Step 3**</mark> The ETF sponsor creates the ETF shares and delivers them back to the AP as a creation unit.\ <mark style="color:red;">**Step 4**</mark> The AP delivers the creation unit/ETF shares to the secondary market.

ETF Creation Process

1\. John goes to his broker and gives him the order to buy 500,000 shares of an ETF.\
2\. The broker sells the ETF shares to John at a specific price. As mentioned before, the process of buying the ETF is seamless for John the investor, and his work is done.\
3\. Behind the scenes on the back end, the broker has determined that, due to the increased demand by John, he as an authorized participant must create new ETF shares. He is now short the ETF shares since he sold them to John.\
4\. The broker then buys the basket of securities held by the ETF to hedge himself and is now long the basket and short the ETF.\
5\. The broker then delivers the basket of securities to the ETF issuer, initiating a creation.\
6\. The broker receives new ETF shares from the issuer in return and flattens out his short ETF position.


# Redemption

Redemption

1. AP buys ETF shares from market
2. AP delivers ETF shares to the fund
3. AP receives new ETF shares
4. AP sells ETF shares in market

**Q: Why redeem?**\
A: Fill orders / Reduce inventory / Take advantage of arbitrage opportunities

<mark style="color:red;">**Step 1**</mark> The Investor decides to sell their ETF shares on the secondary market:\
• If there is market demand, the shares are sold on the market.\
• If there is low demand, the AP gathers up enough shares to create a redemption unit.\ <mark style="color:red;">**Step 2**</mark> The AP puts together a redemption unit and delivers it to the ETF sponsor in the primary market.\ <mark style="color:red;">**Step 3**</mark> The ETF sponsor redeems the ETF shares for the individual securities that make up the shares and delivers them back to the AP.\ <mark style="color:red;">**Step 4**</mark> The AP can sell the individual securities in the secondary market for cash.

ETF Redemption Process

1\. John goes to his broker and gives him the order to sell 500,000 shares of the ETF.\
2\. The broker buys the ETF shares from John at an agreed-upon price.\
3\. The broker determines if a redemption is necessary due to the decrease in demand and is now long the ETF since John sold the shares back to him.\
4\. The broker then sells the basket of securities held by the ETF to hedge his position and is now short the basket, long the ETF.\
5\. The broker delivers the ETF shares to the ETF issuer, initiating a redemption.\
6\. The broker receives the basket of securities from the issuer and flattens out the short basket position.


# Token

token/Dollar.sol\
token/Share.sol\
token/Bond.sol\
token/ConvertibleBond.sol\
token/ConvertibleBond\_V2.sol\
token/MunicipalBond.sol\
token/Fund.sol\
token/IntervalFund.sol\
token/MoneyMarketFund.sol\
token/ExchangeTradedFund.sol\
token/ClosedEndFund.sol

***

### Inheritance

token/Fund.sol\
\- token/IntervalFund.sol\
\- token/MoneyMarketFund.sol\
\- token/ExchangeTradedFund.sol\
\- token/ClosedEndFund.sol\
\- token/RealEstateInvestmentTrust.sol

token/Bond.sol\
\- token/ConvertibleBond.sol\
\- token/ConvertibleBond\_V2.sol\
\- token/MunicipalBond.sol\
\- token/USTreasuryBill.sol\
\- token/USTreasuryNote.sol\
\- token/USTreasuryBond.sol\
\- token/USTreasurySecurity.sol

token/Share.sol\
\- RealEstate.sol

***

RESOURCES

[Security Types DTCC](https://www.dtcc.com/products/training/helpfiles/asset_services/corporate_actions/help/secfinder/definitions/ewiz_valuelist_defs.htm)

[Security Types Docs](/bitnet/taxonomy/security-types)


# Utils

XFTBatchRouter [0x77047C9A84cf286f3BC8B3880d8D310C8ff67361](https://sepolia.arbiscan.io/address/0x77047c9a84cf286f3bc8b3880d8d310c8ff67361#code)

```json
[{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalOperations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalOperations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalOperations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchTransfer","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"permitAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"permitAndBatchTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]
```

XFTBatchRouter [0x8a43dB6650779c2B933B73f28c059B3a2Cc3b9B2](https://sepolia.arbiscan.io/address/0x8a43dB6650779c2B933B73f28c059B3a2Cc3b9B2#code)

batchBurn (0x2a499e50)

batchMint (0x0fcfdeb4)

batchMintMulti (0xa6b8de67)

batchTransfer (0x1239ec8c)

permitAndBatchTransfer (0x889f375e)

```json
[{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalOperations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalOperations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalOperations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchMintMulti","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalOperations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"BatchTransfer","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchMintMulti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"batchTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"permitAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"permitAndBatchTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]
```

XFTBatchRouter [0x3F7b6f1aB6CCBcbe13540078C6283E6Ddf8aECC5](https://sepolia.arbiscan.io/address/0x3F7b6f1aB6CCBcbe13540078C6283E6Ddf8aECC5#code)

Multicall3 [0xcA11bde05977b3631167028862bE2a173976CA11](https://sepolia.arbiscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code)

```json
[{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call[]","name":"calls","type":"tuple[]"}],"name":"aggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes[]","name":"returnData","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call3[]","name":"calls","type":"tuple[]"}],"name":"aggregate3","outputs":[{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct Multicall3.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"allowFailure","type":"bool"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call3Value[]","name":"calls","type":"tuple[]"}],"name":"aggregate3Value","outputs":[{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct Multicall3.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call[]","name":"calls","type":"tuple[]"}],"name":"blockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct Multicall3.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getBasefee","outputs":[{"internalType":"uint256","name":"basefee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBlockNumber","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChainId","outputs":[{"internalType":"uint256","name":"chainid","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockCoinbase","outputs":[{"internalType":"address","name":"coinbase","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockDifficulty","outputs":[{"internalType":"uint256","name":"difficulty","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockGasLimit","outputs":[{"internalType":"uint256","name":"gaslimit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBlockTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getEthBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastBlockHash","outputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call[]","name":"calls","type":"tuple[]"}],"name":"tryAggregate","outputs":[{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct Multicall3.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"requireSuccess","type":"bool"},{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"internalType":"struct Multicall3.Call[]","name":"calls","type":"tuple[]"}],"name":"tryBlockAndAggregate","outputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"components":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"internalType":"struct Multicall3.Result[]","name":"returnData","type":"tuple[]"}],"stateMutability":"payable","type":"function"}]
```

XFTSettlementFacility 0xF0Ce1f20c1e7e60BE49ab692217d80b099B6bF4F

XFTSettlementFacility 0x5e7Ab4D14989C03a2c92946eDfA0d9F29BCda36C


# Swap Facilities

**ARBITRUM SEPOLIA**

XFTAssetSwaps [0x2464d9F2774786ceD8163e46E246C1300cf2bA2A](https://sepolia.arbiscan.io/address/0x2464d9F2774786ceD8163e46E246C1300cf2bA2A)

XFTAssetSwaps\_V3 [0x8b22a7b3F91BE1694229A9DF4FaefDe11E9508da](https://sepolia.arbiscan.io/address/0x8b22a7b3F91BE1694229A9DF4FaefDe11E9508da)

XFTAssetSwaps\_V4 [0xfbae4ba53a2FcCD599047d4B2Ff77647e0eb308C](https://sepolia.arbiscan.io/address/0xfbae4ba53a2FcCD599047d4B2Ff77647e0eb308C)

XFTAssetSwaps\_V5 [0x05EC1faCe695f78a5A9530c612345603f926EAa7](https://sepolia.arbiscan.io/address/0x05EC1faCe695f78a5A9530c612345603f926EAa7)

XFTMultiAssetSwaps [0x43B7B8045279EDD17a75FE857Ab43eF0e90350EB](https://sepolia.arbiscan.io/address/0x43B7B8045279EDD17a75FE857Ab43eF0e90350EB)

XFTMultiAssetSwap\_V2 [0x43A8a85A2E8bc98D1c54c3244C3b61230b3cf5E6](https://sepolia.arbiscan.io/address/0x43A8a85A2E8bc98D1c54c3244C3b61230b3cf5E6)


# DRS

Book entry = wallet balances

Settlement = smart contracts, atomic

Netting = not needed, RTGS

Custody = wallets

Corporate actions = smart contracts

***

<mark style="color:purple;">PROBLEM</mark>

<figure><img src="/files/fqoh3gPXq1D5JXKfgKK6" alt=""><figcaption></figcaption></figure>

* [FORM TA-2/A](https://www.sec.gov/Archives/edgar/data/1630490/000163049025000005/xslFTA2X01/primary_doc.xml)
* FIS Investor Services LLC /TA CIK#: [0001630490 (see all company filings)](https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany\&CIK=0001630490\&owner=exclude\&count=40)

<mark style="color:purple;">SOLUTION</mark>

Bitstream blockchain book-entry. [TransferAgentModule\_V5.sol](https://arbiscan.io/address/0x0a5e03aaa760873c22c25f132ee642a2d4cc9865#code)

***

### TECHNICAL IMPLEMENTATION

* tokenized new issue = DTC book entry&#x20;
* wallets = DTC participant acc
* smart contracts = DTC settlement

<mark style="color:red;">**distributeDividends (0xbce049b7)**</mark>

Distributes dividends to the account if it has holdings. The amount of shares to distribute in the form of divideds are calculated as follows: Share dividends = (account's balance \* rate) / price This operation will mint or burn shares according to the rate provided. If rate > 0 it will mint shares If rate < 0 it will burn shares

accounts (address\[])\
date (uint256): The date of the request as a UNIX timestamp\
rate (int256): The rate for the given shareholder\
price (uint256): The NAV price per share

<mark style="color:red;">**distributeDividends (0xd2920e5f)**</mark>

Distributes full or proportional dividends to the account if it has holdings. The amount of shares to distribute in the form of divideds are calculated as follows: If the adjusted shares for the account are greather than zero, Share dividends = (adjusted shares \* rate) / price Otherwise, Share dividends = (account's balance \* rate) / price This operation will mint or burn shares according to the rate provided. If rate > 0 it will mint shares If rate < 0 it will burn shares

accounts (address\[])\
adjustedShares (uint256\[])\
date (uint256): The date of the request as a UNIX timestamp\
rate (int256): The rate for the given shareholder\
price (uint256): The NAV price per share

<mark style="color:red;">endOfDay (0x72cfff36)</mark>

Distributes dividends and settles existing requests prior to the specified date for the given account.

accounts (address\[])\
txIds (bytes32\[])\
date (uint256): The date of the request as a UNIX timestamp\
rate (int256): The rate\
price (uint256): The NAV price per share

<mark style="color:red;">**endOfDay (0xa4152129)**</mark>

Distributes full or partial dividends and settles existing requests prior to the specified date for the given account.

accounts (address\[])\
adjustedShares (uint256\[])\
txIds (bytes32\[])\
rate (int256): The rate\
price (uint256): The NAV price per share

<mark style="color:red;">**settleTransactions (0xfd059319)**</mark>

Settles existing requests prior to the specified date for the given account. This operation will mint or burn shares according to the request type.

accounts (address\[])\
txIds (bytes32\[])\
rate (int256): The rate\
price (uint256): The NAV price per share

<mark style="color:red;">**settleCXTransaction (0xda9d15b6)**</mark>

Settles the given cross-chain request prior to the specified date for the given account. This operation will mint or burn shares according to the request type.

account (address)&#x20;the address of the shareholders' account\
requestId (bytes32)&#x20;the id of the request to process\\

date (uint256)&#x20;the maximum date to process the request represented as a UNIX timestamp\\

price (uint256)&#x20;The NAV price per share

<mark style="color:red;">**settleCXTransactions (0x23b2a067)**</mark>

Settles all the account's request given as an array of id's prior to the specified date.

account (address)

&#x20;the address of the shareholders' account\
requestIds (bytes32\[])\
date (uint256)&#x20;the maximum date to finish processing request from represented as a UNIX timestamp\
price (uint256)&#x20;the NAV price per share

### USER / DATA FLOWS

<mark style="color:red;">INVESTOR BUYS SHARES</mark>

1. Investor submits purchase request via Transactional Module.
2. Transactional Module checks Authorization Module for investor whitelist status.
3. Transactional Module stores pending transaction.
4. Admin calls Transfer Agent Module with NAV price at end of day.
5. Transfer Agent Module reads pending transactions from Transactional Module.
6. Transfer Agent Module calculates shares = (cash amount × scale factor) / price.
7. Transfer Agent Module calls Fund Token to mint shares to investor.
8. Fund Token checks Authorization Module to verify recipient is authorized.
9. Fund Token mints shares to investor balance.
10. Transfer Agent Module clears transaction from Transactional Module.

<mark style="color:red;">DAILY DIVIDEND DISTRIBUTION</mark>

1. Admin calls Transfer Agent Module with rate and price.
2. Transfer Agent Module checks Authorization Module to verify caller is admin.
3. Transfer Agent Module reads investor balance from Fund Token.
4. Transfer Agent Module calculates dividend shares = (balance × rate) / price.
5. Transfer Agent Module calls Fund Token to mint dividend shares.
6. Fund Token updates investor balance.
7. Transfer Agent Module emits DividendDistributed event.

<mark style="color:red;">INVESTOR REDEEMS SHARES</mark>

1. Investor submits liquidation request via Transactional Module.
2. Transactional Module stores pending redemption.
3. Admin calls Transfer Agent Module at end of day.
4. Transfer Agent Module reads pending liquidation from Transactional Module.
5. Transfer Agent Module calls Fund Token to burn shares.
6. Fund Token reduces investor balance.
7. Transfer Agent Module clears transaction from Transactional Module.
8. Off chain system triggers USD wire to investor.

<mark style="color:red;">ACCOUNT RECOVERY (LOST KEYS)</mark>

1. Admin calls Transfer Agent Module recoverAccount function.
2. Transfer Agent Module checks Transactional Module for pending transactions.
3. Transfer Agent Module calls Fund Token to transfer full balance to new address.
4. Transfer Agent Module calls Authorization Module to deauthorize old address.
5. Authorization Module updates whitelist.

<mark style="color:red;">CROSS CHAIN TRANSFER OUT</mark>

1. Investor requests CXFER\_OUT via Transactional Module.
2. Admin calls Transfer Agent Module settleCXTransaction.
3. Transfer Agent Module burns shares from Fund Token.
4. Bridge system mints equivalent on destination chain.

<mark style="color:red;">CROSS CHAIN TRANSFER IN</mark>

1. Bridge system records CXFER\_IN in Transactional Module.
2. Admin calls Transfer Agent Module settleCXTransaction.
3. Transfer Agent Module mints shares on Fund Token.
4. Investor receives shares on this chain.

<figure><img src="/files/UZYbexGox8W8WOQzQRdX" alt="" width="563"><figcaption></figcaption></figure>

***

RESOURCES

<https://www.ici.org/viewpoints/view_18_interval_funds>

<https://www.ici.org/system/files/attachments/20_ppr_interval_funds.pdf>

<https://www.dtcc.com/itp-hub/dist/downloads/Impact_of_fails_Infographic_2020.pdf>


# AIP

Alternative Investment Product Services (AIP) is a standardized, trading and reporting platform that links the alternative investments industry to securely and efficiently exchange data and money.

**Pre-Trade: Foundation for Seamless Execution**

* Fund Onboarding: Establish funds with unique identifiers and key operational details.
* Investor Account Setup: Create and maintain investor profiles with precision.
* Lifecycle Configuration: Define purchase, redemption, and capital call periods to align with fund strategies.

 **Trade: Execute with Confidence**

* Transaction Processing: Execute purchases, redemptions, commitments, and capital calls electronically.
* Order Management: Streamline order flow with standardized data exchange and payment.
* Secure Data Handling: Ensure integrity and confidentiality across all trade interactions.

**Post-Trade: Transparency & Efficiency**

* Position Reporting: Deliver accurate investor position updates to custodians and broker-dealers.
* Account Activity: Reflect investor account changes in real time.
* Valuation & Commissions: Report NAVs and commissions with clarity and consistency.
* Internal Transfers: Facilitate non-ACAT transfers securely within the platform.

***

RESOURCES

<https://www.dtcc.com/wealth-management-services/alternative-investment-products/aip>


# DTC

**Traditional:** Seller → Introducing Broker → Clearing Broker → DTC → NSCC → DTC → Clearing Broker → Introducing Broker → Buyer

<figure><img src="/files/0hlFbBKgOfWq31Z0gwbs" alt=""><figcaption></figcaption></figure>

NSCC nets all trades.

NSCC guarantees settlement.

DTC moves securities.

Fedwire moves cash.

If one side fails, NSCC covers.

FUNCTION

Immobilizes physical certificates (holds master certificate).

Maintains book entry ownership records.

Settles trades by debiting seller, crediting buyer.

Nets cash obligations across all participants daily.

Guarantees settlement via National Securities Clearing Corporation (NSCC).

NEW ISSUES

* Issuer hires underwriter (investment bank).
* Underwriter markets bonds to institutional investors.
* Investors commit to buy at offering price.
* On settlement date, DTCC settles the trade.

Underwriter deposits bonds at DTC (DTCC subsidiary).\
DTC holds bonds in street name (Cede & Co).\
DTC credits bonds to underwriter's DTC account.\
Underwriter delivers bonds to investor accounts via DTC book entry.\
DTC debits underwriter account, credits investor accounts.\
Fedwire or bank transfers move cash: investors → underwriter → issuer.\
DTC nets all cash movements across participants end of day.

<https://www.sec.gov/files/rules/concept/2015/34-76743.pdf>


# CONVERTIBLE BONDS

## Convertible Bond Events

ISSUANCE \
COUPON\_PAYMENT \
TRANSFER \
CONVERSION \
MATURITY

***

## Convertible Bond Smart Contract Data Flows

### ISSUANCE

1. Issuer approves convertible bond offering with conversion ratio and price.
2. Admin whitelists investors in Authorization Module.
3. Transfer Agent Module mints bond tokens to investor wallets.
4. Investors wire purchase price to issuer off chain.
5. Bond Token stores conversion terms in contract metadata.

### COUPON\_PAYMENT

1. Bond reaches scheduled coupon date.
2. Admin calls Transfer Agent Module with coupon rate.
3. Transfer Agent Module reads all holder balances from Bond Token.
4. Transfer Agent Module calculates coupon per holder.
5. Paying agent wires coupon to each holder off chain.

### TRANSFER

1. Seller and buyer agree on price off chain.
2. Broker submits transfer to Transactional Module.
3. Authorization Module verifies both parties whitelisted.
4. Transfer Agent Module moves bonds from seller to buyer.
5. Buyer wires price to seller off chain.

### CONVERSION

1. Holder elects to convert bonds to equity.
2. Holder submits conversion request to Transactional Module.
3. Transfer Agent Module reads conversion ratio from bond metadata.
4. Transfer Agent Module burns bond tokens from holder wallet.
5. Transfer Agent Module calculates equity shares = bond par × conversion ratio.
6. Transfer Agent Module mints equity shares on Equity Token to holder wallet.
7. Holder now owns common stock instead of bonds.

### MATURITY

1. Bond reaches maturity date.
2. Admin calls Transfer Agent Module.
3. Transfer Agent Module reads all remaining holder balances.
4. Transfer Agent Module burns all bond tokens.
5. Paying agent wires par value to each holder off chain.
6. Bond contract marked inactive.


# INTERVAL FUND

## Interval Fund Events

SUBSCRIPTION \
REPURCHASE \
PRORATION \
DIVIDEND\_CASH \
DIVIDEND\_REINVEST \
CAPITAL\_GAIN \
SHARE\_CLASS\_CONVERSION \
FUND\_EXCHANGE\_IN \
FUND\_EXCHANGE\_OUT \
TRADE\_CORRECTION \
ACCOUNT\_OPENING \
FUND\_MERGER \
FUND\_CLOSURE \
REVERSE\_STOCK\_SPLIT \
RETURN\_OF\_CAPITAL

***

## Interval Fund Smart Contract Data Flows

### SUBSCRIPTION (Continuous)

1. Investor submits subscription via Transactional Module.
2. Transactional Module checks Authorization Module for investor whitelist.
3. Transactional Module stores pending CASH\_PURCHASE.
4. Admin calls Transfer Agent Module with NAV price at end of day.
5. Transfer Agent Module calculates shares = (cash × scale) / price.
6. Transfer Agent Module calls Fund Token to mint shares.
7. Fund Token updates investor balance.
8. Transfer Agent Module clears transaction from Transactional Module.

### REPURCHASE (Periodic)

1. Fund announces repurchase period with start date, end date, and offer percentage.
2. Admin opens repurchase window in Transactional Module.
3. Investors submit repurchase requests during window.
4. Transactional Module stores pending CASH\_LIQUIDATION with timestamp.
5. Repurchase window closes at deadline.
6. Admin calls Transfer Agent Module on repurchase processing date.
7. Transfer Agent Module reads all pending repurchases from Transactional Module.
8. Transfer Agent Module checks if total requests exceed offer limit.
9. If under limit, Transfer Agent Module burns shares from Fund Token for each investor.
10. If over limit, Transfer Agent Module triggers proration.
11. Off chain system wires USD to investors.

### PRORATION

1. Transfer Agent Module sums all repurchase requests.
2. Total exceeds repurchase offer limit (e.g., 5% of shares outstanding).
3. Transfer Agent Module calculates proration factor = offer limit / total requests.
4. Transfer Agent Module adjusts each investor's repurchase proportionally.
5. Transfer Agent Module burns prorated shares from Fund Token.
6. Transfer Agent Module updates remaining requests for next repurchase period.
7. Admin communicates proration factor to intermediaries.
8. Investors receive partial redemption proceeds.

### DIVIDEND\_CASH

1. Fund declares dividend with record date and pay date.
2. Transfer Agent Module snapshots all holder balances at record date.
3. Admin calls Transfer Agent Module distributeDividends on pay date.
4. Transfer Agent Module calculates each holder's dividend amount.
5. Transfer Agent Module emits DividendDeclared event per holder.
6. Off chain system wires cash to shareholders electing cash.
7. No shares minted or burned.

### DIVIDEND\_REINVEST

1. Fund declares dividend with record date and pay date.
2. Transfer Agent Module snapshots all holder balances at record date.
3. Admin calls Transfer Agent Module on pay date.
4. Transfer Agent Module calculates dividend amount per holder.
5. Transfer Agent Module calculates reinvest shares = dividend amount / NAV.
6. Transfer Agent Module calls Fund Token to mint reinvest shares.
7. Fund Token updates holder balances.
8. No cash leaves fund.

### CAPITAL\_GAIN

1. Fund declares capital gain distribution with record date.
2. Transfer Agent Module snapshots holder balances.
3. Admin calls Transfer Agent Module on pay date.
4. For cash election holders, off chain system wires proceeds.
5. For reinvest election holders, Transfer Agent Module mints shares.
6. Transfer Agent Module emits CapitalGainDistributed event.

### SHARE\_CLASS\_CONVERSION

1. Investor requests conversion from Class A to Class I.
2. Admin verifies investor eligibility for destination class.
3. Admin schedules conversion for repurchase processing date.
4. Transfer Agent Module burns Class A shares from Fund Token.
5. Transfer Agent Module mints equivalent Class I shares.
6. Fund Token updates balances in both share classes.
7. No taxable event triggered.

### FUND\_EXCHANGE\_OUT

1. Investor requests exchange from Interval Fund A to Open End Fund B.
2. Admin verifies both funds in same family.
3. Exchange must coincide with repurchase processing date.
4. Transfer Agent Module burns shares from Interval Fund A.
5. Transfer Agent Module calls Fund B Token to mint shares.
6. Both transactions linked to prevent partial execution.
7. Net settlement via NSCC if using Fund/SERV.

### FUND\_EXCHANGE\_IN

1. Investor requests exchange from Open End Fund B to Interval Fund A.
2. Admin verifies both funds in same family.
3. If Interval Fund A continuously offered, exchange processes daily.
4. Transfer Agent Module burns shares from Fund B.
5. Transfer Agent Module mints shares in Interval Fund A.
6. Fund Token updates investor balance.

### TRADE\_CORRECTION

1. Intermediary identifies missed repurchase deadline.
2. Intermediary submits correction request to Transfer Agent.
3. Transfer Agent Module checks fund as of policy.
4. If correction crosses dividend period, request denied.
5. If correction causes NAV error, request denied.
6. If correction would trigger proration retroactively, request denied.
7. If approved, Transfer Agent Module processes as of transaction.
8. Intermediary assumes market risk for price changes.

### ACCOUNT\_OPENING

1. Investor completes KYC/AML off chain.
2. Compliance verifies identity.
3. Admin calls Authorization Module to whitelist investor address.
4. Authorization Module adds investor to shareholder registry.
5. Investor can now subscribe to fund.

### FUND\_MERGER

1. Board approves merger of Fund A into Fund B.
2. Admin announces merger with effective date.
3. On effective date, Transfer Agent Module reads all Fund A balances.
4. Transfer Agent Module calculates exchange ratio.
5. Transfer Agent Module burns all Fund A shares.
6. Transfer Agent Module mints equivalent Fund B shares.
7. Fund A Token deactivated.
8. Shareholders now hold Fund B.

### FUND\_CLOSURE

1. Board approves fund liquidation.
2. Admin announces closure with final repurchase date.
3. All pending subscriptions rejected after announcement.
4. On final date, Transfer Agent Module burns all shares.
5. Fund Token totalSupply goes to zero.
6. Off chain system distributes liquidation proceeds to all holders.
7. Fund Token contract deactivated.

### REVERSE\_STOCK\_SPLIT

1. Board approves reverse split ratio (e.g., 1:10).
2. Admin calls Transfer Agent Module processReverseSplit.
3. Transfer Agent Module reads all holder balances from Fund Token.
4. Transfer Agent Module calculates new balance = old balance / ratio.
5. Transfer Agent Module handles fractional shares (cash out or round).
6. Transfer Agent Module burns excess shares.
7. Fund Token updates all holder balances.
8. NAV per share increases proportionally.

### RETURN\_OF\_CAPITAL

1. Fund declares return of capital distribution.
2. Transfer Agent Module snapshots holder balances at record date.
3. Admin calls Transfer Agent Module on pay date.
4. Off chain system wires return of capital to holders.
5. No shares minted or burned.
6. Shareholder cost basis reduced for tax purposes.
7. Transfer Agent Module emits ReturnOfCapital event.

FUND OPERATION

INTERVAL FUND REDEMPTION

1. Board of Directors Approves Repurchase Order
2. Notice of Repurchase Offer Sent to Shareholders
3. File Notice on Form N-23c-3 with SEC
4. Repurchase Request Deadline
5. Repurchase Pricing Date
6. Repurchase Payment Deadline


# MUNICIPAL BONDS

## Municipal Bond Events

ISSUANCE COUPON\_PAYMENT TRANSFER MATURITY

***

## Municipal Bond Smart Contract Data Flows

### ISSUANCE

1. Municipality approves bond offering.
2. Underwriter allocates bonds to investors off chain.
3. Admin whitelists investors in Authorization Module.
4. Admin records allocations in Transactional Module.
5. Transfer Agent Module mints par value to each investor on Bond Token.
6. Investors wire purchase price to issuer off chain.

### COUPON\_PAYMENT

1. Bond reaches scheduled coupon date.
2. Admin calls Transfer Agent Module with coupon rate.
3. Transfer Agent Module reads all holder balances from Bond Token.
4. Transfer Agent Module calculates coupon per holder.
5. Transfer Agent Module emits CouponPayment event.
6. Paying agent wires coupon to each holder off chain.

### TRANSFER

1. Seller and buyer agree on price off chain.
2. Broker submits transfer to Transactional Module.
3. Authorization Module verifies both parties whitelisted.
4. Transfer Agent Module moves par from seller to buyer on Bond Token.
5. Buyer wires price plus accrued interest to seller off chain.

### MATURITY

1. Bond reaches maturity date.
2. Admin calls Transfer Agent Module.
3. Transfer Agent Module reads all holder balances.
4. Transfer Agent Module burns all tokens from Bond Token.
5. Paying agent wires par value to each holder off chain.
6. Bond contract marked inactive.


# Page 2

Issuer Name CITY OF QUINCY

Issuer Name Short QUINCY MASS (MA)

Issue GENERAL OBLIGATION ROADWAY AND SIDEWALK BONDS (DIGITAL DEBT SERVICE ISSUE)

Denomination $5000

<table data-full-width="false"><thead><tr><th>ISIN</th><th>Ticker</th><th width="105.60003662109375">Coupon</th><th>Maturity</th><th>Principal</th><th>Description</th><th>CUSIP</th><th>FIGI</th></tr></thead><tbody><tr><td>US748508V218</td><td>MA QUI 5 05/01/2025</td><td>5</td><td>5/1/2025</td><td>1,180,000</td><td>ROADWAY &#x26; SIDEWALKS-DIGITAL</td><td>748508V21</td><td>BBG01MMRB9S4</td></tr><tr><td>US748508V390</td><td>MA QUI 5 05/01/2026</td><td>5</td><td>5/1/2026</td><td>1,240,000</td><td>ROADWAY &#x26; SIDEWALKS-DIGITAL</td><td>748508V39</td><td>BBG01MMRB9T3</td></tr><tr><td>US748508V473</td><td>MA QUI 5 05/01/2027</td><td>5</td><td>5/1/2027</td><td>1,300,000</td><td>ROADWAY &#x26; SIDEWALKS-DIGITAL</td><td>748508V47</td><td>BBG01MMRB9V0</td></tr><tr><td>US748508V549</td><td>MA QUI 5 05/01/2028</td><td>5</td><td>5/1/2028</td><td>1,370,000</td><td>ROADWAY &#x26; SIDEWALKS-DIGITAL</td><td>748508V54</td><td>BBG01MMRB9X8</td></tr><tr><td>US748508V622</td><td>MA QUI 5 05/01/2029</td><td>5</td><td>5/1/2029</td><td>1,435,000</td><td>ROADWAY &#x26; SIDEWALKS-DIGITAL</td><td>748508V62</td><td>BBG01MMRB9Z6</td></tr><tr><td>US748508V705</td><td>MA QUI 5 05/01/2030</td><td>5</td><td>5/1/2030</td><td>1,505,000</td><td>ROADWAY &#x26; SIDEWALKS-DIGITAL</td><td>748508V70</td><td>BBG01MMRBB09</td></tr><tr><td>US748508V887</td><td>MA QUI 5 05/01/2031</td><td>5</td><td>5/1/2031</td><td>1,585,000</td><td>ROADWAY &#x26; SIDEWALKS-DIGITAL</td><td>748508V88</td><td>BBG01MMRBB18</td></tr></tbody></table>

**JPMorgan Chase Bank, National Association; J.P. Morgan Securities LLC**

JPMorgan Chase Bank, National Association has advised us that it is:

• a national banking association organized under the laws of the United States;\
• a “banking organization” within the meaning of the New York State Banking Law;\
• a member of the Federal Reserve System; and\
• a “securities intermediary” within the meaning of the Uniform Commercial Code.

JPMorgan Chase Bank, National Association has advised us that it is not a “clearing agency” registered under Section 17A of the United States Exchange Act of 1934, as amended (the “Exchange Act”).

J.P. Morgan Securities LLC has advised us that it is:

• a limited liability company organized under the laws of Delaware; and\
• a “broker-dealer” registered under Section 15 of the Exchange Act.

J.P. Morgan Securities LLC has advised us that it is not a “clearing agency” registered under Section 17A of the Exchange Act.

RESOURCES

<https://xft.finance/secdb/quincy/index.html>

P21804543-P21384806-P21824954.txt

[https://emma.msrb.org/IssueView/Details/P2428918](<https://emma.msrb.org/IssueView/Details/P2428918&#xD;&#xA;>)

GENERAL OBLIGATION ROADWAY AND SIDEWALK BONDS (DIGITAL DEBT SERVICE ISSUE) 5/2/2024 2025 to 2031

<https://en.wikipedia.org/wiki/Serial_bond>


# TECHNICAL

Transfer agents *record changes of ownership*, maintain the issuer's security holder records, cancel and issue certificates, and distribute dividends.

<mark style="color:purple;">FUND OPERATIONS</mark>

adjustBalance

distributeDividends

[endOfDay](/bitnet/use-cases/drs/technical)

settleTransactions

settleCXTransactions

<mark style="color:purple;">TRANSACTION OPERATIONS</mark>

ADJUSTMENT\
AIP\
DIVIDEND\
DIVIDEND REINVESTMENT\
CASH\_LIQUIDATION\
SHARE\_LIQUIDATION\
CASH\_PURCHASE\
SHARE\_PURCHASE\
FULL\_LIQUIDATION\
SHARE\_TRANSFER\
CXFER\_OUT\
CXFER\_IN

DATA TYPES

```solidity
enum TransactionType {
    INVALID,
    ADJUSTMENT,
    AIP,
    DIVIDEND,
    DIVIDEND_REINVESTMENT,
    CASH_LIQUIDATION,
    SHARE_LIQUIDATION,
    CASH_PURCHASE,
    SHARE_PURCHASE,
    FULL_LIQUIDATION,
    SHARE_TRANSFER,
    CXFER_OUT,
    CXFER_IN
}
```

***

RESOURCES

TransactionIfaces.sol

{% code expandable="true" %}

```solidity
// SPDX-License-Identifier: Business Source License 1.1
pragma solidity 0.8.18;

import {IAuthorization} from "./IAuthorization.sol";

interface ITransactionStorage {
    enum TransactionType {
        INVALID,
        ADJUSTMENT,
        AIP,
        DIVIDEND,
        DIVIDEND_REINVESTMENT,
        CASH_LIQUIDATION,
        SHARE_LIQUIDATION,
        CASH_PURCHASE,
        SHARE_PURCHASE,
        FULL_LIQUIDATION,
        SHARE_TRANSFER,
        CXFER_OUT,
        CXFER_IN
    }

    struct TransactionDetail {
        TransactionType txType;
        uint256 date;
        uint256 amount;
        bool selfService;
    }

    struct ShareholderTransaction {
        bytes32 txId;
        TransactionDetail txDetail;
    }

    function clearTransactionStorage(
        address account,
        bytes32 requestId
    ) external returns (bool);

    function unlistFromAccountsWithPendingTransactions(
        address account
    ) external;

    function getAccountTransactions(
        address account
    ) external view returns (bytes32[] memory);

    function getTransactionDetail(
        bytes32 requestId
    ) external view returns (uint8, uint256, uint256, bool);

    function getAccountsWithTransactions(
        uint256 pageSize
    ) external view returns (address[] memory accounts);

    function getAccountsWithTransactionsCount() external view returns (uint256);

    function hasTransactions(address account) external view returns (bool);

    function isFromAccount(
        address account,
        bytes32 requestId
    ) external view returns (bool);
}

// Extended interface introduced for the new Share Transfer functionality,
// it was added in TransactionalModule_V3.sol
interface IExtendedTransactionDetail is ITransactionStorage {
    struct ExtendedTransactionDetail {
        TransactionType txType;
        uint256 date;
        uint256 amount;
        bool selfService;
        address source;
        address destination;
    }

    function getExtendedTransactionDetail(
        bytes32 requestId
    ) external view returns (uint8, address, address, uint256, uint256, bool);
}

interface IShareholderTransaction {
    function requestCashPurchase(
        address account,
        uint256 date,
        uint256 amount
    ) external;

    function requestCashLiquidation(
        address account,
        uint256 date,
        uint256 amount
    ) external;

    function requestFullLiquidation(address account, uint256 date) external;
}

interface IShareholderTransferTransaction {
    function requestShareTransfer(
        address account,
        address destination,
        uint256 date,
        uint256 amount
    ) external;
}

interface IShareholderSelfServiceTransaction {
    function requestSelfServiceCashPurchase(uint256 amount) external;

    function requestSelfServiceCashLiquidation(uint256 amount) external;

    function requestSelfServiceFullLiquidation() external;

    function enableSelfService() external;

    function disableSelfService() external;

    function isSelfServiceEnabled() external view returns (bool);
}

interface IShareholderSelfServiceTransferTransaction {
    function requestSelfServiceShareTransfer(
        uint256 amount,
        address destination
    ) external;
}

interface ITransferAgentTransaction {
    function setupAIP(address account, uint256 date, uint256 amount) external;
}

interface ICancellableSelfServiceTransaction {
    function cancelSelfServiceRequest(
        bytes32 requestId,
        string memory memo
    ) external;
}

interface ICancellableTransaction {
    function cancelRequest(
        address account,
        bytes32 requestId,
        string calldata memo
    ) external;
}

```

{% endcode %}


# endOfDay

FUND EOD NAV&#x20;

FUNCTION

```solidity
function endOfDay(
    address[] calldata accounts,
    uint256[] calldata adjustedShares,
    bytes32[] calldata txIds,
    uint256 date,
    int256 rate,
    uint256 price
)
    external
    virtual
    override
    onlyAdmin
    onlyWithValidRate(rate)
    onlyValidPaginationSize(accounts.length, MAX_ACCOUNT_PAGE_SIZE)
    onlyValidPaginationSize(adjustedShares.length, MAX_ACCOUNT_PAGE_SIZE)
    onlyValidPaginationSize(txIds.length, MAX_TX_PAGE_SIZE)
{
    require(
        accounts.length == adjustedShares.length,
        "ARRAY_LENGTH_MISMATCH"
    );
    moneyMarketFund.updateLastKnownPrice(price);
    for (uint i = 0; i < accounts.length; ) {
        uint256 accountBalance;
        if (adjustedShares[i] == 0) {
            accountBalance = moneyMarketFund.balanceOf(accounts[i]);
        } else {
            accountBalance = adjustedShares[i];
        }
        _processDividends(accounts[i], accountBalance, date, rate, price);
        _processSettlements(txIds, accounts[i], date, price);
        unchecked {
            i++;
        }
    }
}
```

INTERFACE

```solidity
function endOfDay(
    address[] memory accounts,
    uint256 date,
    int256 rate,
    uint256 price
) external;

function endOfDay(
    address[] calldata accounts,
    bytes32[] calldata txIds,
    uint256 date,
    int256 rate,
    uint256 price
) external;

function endOfDay(
    address[] calldata accounts,
    uint256[] calldata adjustedShares,
    bytes32[] calldata txIds,
    uint256 date,
    int256 rate,
    uint256 price
) external;
```

USER FLOW

RESOURCES


# TransferAgentModule\_V5

## TransferAgentModule\_V5

This contract is an on-chain **transfer agent** for a tokenized money market fund (like FOBXX). It handles:

### Core Operations

#### 1. **Dividend Distribution**

```
dividendShares = (balance × rate) / price
```

* Positive rate → mint shares (yield)
* Negative rate → burn shares (rare negative yield)

#### 2. **Transaction Settlement**

Processes pending buy/sell orders:

* **Purchases** (AIP, cash) → mint shares: `shares = (cashAmount × scaleFactor) / NAV`
* **Liquidations** → burn shares, return cash value
* **Transfers** → move shares between accounts

#### 3. **End of Day** (combined operation)

Dividends + settlements in one call—typical daily batch.

***

### Example: FOBXX Daily Operations

**Morning:** Investors submit orders (stored in TransactionalModule)

**4PM NAV published:** $1.0002/share, daily rate = 0.00014 (5.1% APY)

**Admin calls `endOfDay`:**

```
accounts: [0xAlice, 0xBob, 0xCarol]
txIds: [pending orders to skip if needed]
date: 1736380800  // today
rate: 140000000000000  // 0.014% scaled
price: 1000200000000000000  // $1.0002 scaled
```

**For Alice (holds 10,000 shares, pending $5,000 purchase):**

1. Dividend: `10000 × rate / price` → \~1.4 shares minted
2. Settlement: `$5000 / $1.0002` → \~4,999 shares minted

***

### Admin Controls

| Function               | Purpose                             |
| ---------------------- | ----------------------------------- |
| `adjustBalance`        | Fix errors manually                 |
| `recoverAccount`       | Transfer entire balance (lost keys) |
| `recoverAsset`         | Partial recovery                    |
| `settleCXTransactions` | Cross-chain transfers               |

All functions require admin role and emit detailed events for audit trail.


# Energy

DRS compresses energy supply chain credit tenor to RTGS.&#x20;

DRS perpetual futures.&#x20;

Hedging energy for end users and generator

<figure><img src="/files/74QvDi6Fcv1oHLZ1X07L" alt=""><figcaption></figcaption></figure>

Generator;s hedge

<figure><img src="/files/2uLShJOrtWnIF2mAEaKv" alt=""><figcaption></figcaption></figure>

End users hedge

<figure><img src="/files/MO3NndjtZH2pKhHnxsNW" alt=""><figcaption></figcaption></figure>

Marketer's long hedge

<figure><img src="/files/0AWv1wZm9nkIlNptWkwG" alt=""><figcaption></figcaption></figure>

Marketer's short hedge

<figure><img src="/files/lBmedmLekVNOROP76FDb" alt=""><figcaption></figcaption></figure>

Generator's speculative positions

<figure><img src="/files/q16mq2j0ikE9XjIW6OSj" alt=""><figcaption></figcaption></figure>

The “stack and roll” method poses serious cash flow risks. A firm must have sufficient capital\
to ensure that it can pay for potentially large derivative losses in the early years, that will be\
offset by gains in the physical position in future years. This problem is particularly striking\
since futures-spot price relationships\
that are beneficial for generators are\
detrimental to marketers. If both\
generators and marketers are\
employing the “stack and roll” method\
at the same time, one of them will\
experience gains while the other will experience losses in the early years of the hedge. It was\
exactly this cash flow problem associated with the “stack and roll” that caused\
Metallgesellschaft to lose $1.3 billion trying to hedge its oil marketing activities. It is this risk\
that electricity regulators must be aware of when designing policies to control the use of\
electric rate derivatives.

<https://emp.lbl.gov/publications/primer-electricity-futures-and-other>

*Sell power*, *buy* gas

{% file src="/files/F7L8WqGhbxqniRoDsHWe" %}

<https://nworbmot.org/courses/ee-23/ee-5-energy_trading.pdf>

<figure><img src="/files/HLMi0EYlIwkpH5NGLyO6" alt=""><figcaption></figcaption></figure>


# Bitstream

Bitstream is the central securities depository arm of The XFT Group. It provides settlement, custody, issuance, and post-trade infrastructure for global markets. <br>


# Blockchain


# L1 network


# Whitelabel L2 networks


# CSD

<figure><img src="/files/Y9V8mxqRs5NUXROwPAQi" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/JSpKck7teUPIUIR2EVmO" alt=""><figcaption></figcaption></figure>

***

RESOURCES

<https://www.banque-france.fr/system/files/2023-04/payments_market.pdf>


# SSS

Securities settlement systems

<figure><img src="/files/fExet1oTHkTMkufqcueF" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/U6d1zZRtJdV63ZCUrq6E" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/4vmgVpZ1rIQGNmxkleHe" alt=""><figcaption></figcaption></figure>

***

RESOURCES

<https://www.banque-france.fr/system/files/2023-04/payments_market.pdf>


# IDN

International Deposits Network (IDN)

The IDN is our RTGS payment system for tokenized commercial bank deposits. It is used to put onchain tokenized products into traditional offchain bank accounts. Send cross-border real-time payments using IDN blockchain deposit accounts.

**Why use IDN?**

**Corporate treasury:** Instant transfers between internal business accounts can maximize investment of excess cash, free working capital and streamline reconciliation with data-rich ISO® 20022 messaging.

**Corporate payroll:** Transferring funds between internal accounts at an organization or between an organization and its payroll processor can enable faster funding, negate the need to prefund payroll accounts and eliminate reliance on less efficient payment options, such as checks.

**Vendor payments:** Using instant payments to pay suppliers for inventory or services can benefit businesses by improving cash flow management, enhancing operational efficiency and optimizing liquidity management.

**Real estate transactions:** Immediate clearing and settlement of high-dollar commercial real estate payments, such as escrow account funding and contractor payments, can provide certainty of funds, allow after-hour and weekend payments, and improve transparency during the process.

**Benefits**

* **Avoid prefunding with 24/7 real-time payments:** Move funds on banking holidays, fund shortfalls, working capital gaps, and other ad hoc transfers.&#x20;
* **Cross-border payments:** Unlock working capital globally with cross-border payments and enable new business models, for example, machine-to-machine payments.
* **Real-time visibility:** View transactions and balances in real-time to ensure transparency and finality of payment.
* **Advance payment type support:** Use Delivery versus Payment (DvP), Payment versus Payment (PvP), and machine-to-machine payment types.

**When to use the IDN?**&#x20;

* **Intra-company payments:** Optimize and mobilize your liquidity among connected entities by moving funds domestically or cross-border 24/7/365, including on holidays.
* **Inter-company payments:** Speed up commercial settlement and align treasury processes to the real-time nature of the industry by moving funds domestically or cross-border any day and time of the week including on holidays.
* **Merchant acquirers and beneficiaries:** Pay acquirers 24/7, and settle funds with certainty on-demand, multiple times a day and minimize need for prefunding and credit lines.
* **Unlock idle working capital and liquidity:** Efficiently leverage your existing liquidity by automatically moving funds cross-border in a “follow the sun” model to draw on liquidity as needed.
* **USD offshore Clearing for financial institutions:** Instantaneously settle and clear USD minimizing the need to prefund or use of credit lines on nostro accounts for financial institutions onchain.
* **Event driven payments:** Automated real time treasury through the use of Programmable Payments using an intuitive ‘if-this-then-that’ web interface.

**When to use IDN for Real-Time Payments**

* **Wallet withdrawals:** Give users immediate access to funds by initiating transfers from digital wallets to bank accounts.
* **Instant payroll:** Empower employees with on-demand payouts for their earned wages.
* **Merchant payouts:** Give merchants the flexibility to access their funds on demand.
* **Vendor payments:** Pay vendors for services and goods provided and reduce costly follow-ups.
* **Urgent payments and payroll:** Make urgent payments to employees with speed and finality.
* **Bill payments:** Confirm received payments in real-time, reducing support calls.

### Use cases

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top"><p><strong>Car Sales and Auto Lending</strong></p><p><em>Expediting New and Used Car Sales</em></p><p></p><p>Real-time payments over the IDN allow car sellers to receive payment at the same time they hand over the keys to the buyer.</p></td><td valign="top"><p><strong>Consumer Loans</strong></p><p><em>Expediting Personal Loans for Consumers</em></p><p></p><p>Consumers who need short-term loans in an emergency benefit from real-time payments.</p></td></tr><tr><td valign="top"><p><strong>Corporate Credit Cards</strong></p><p><em>IDN Payments Help Keep Corporate Cards Funded</em></p><p></p><p>Instant payments can prefund or pay balances for corporate cards.</p></td><td valign="top"><p><strong>Digital Wallets</strong></p><p><em>Instantly Move Funds From Digital Wallets to Bank Accounts</em></p><p></p><p>Real-time payments over the IDN allow customers to transfer stored digital-wallet funds instantaneously.</p></td></tr><tr><td valign="top"><p><strong>Earned Wage Access</strong></p><p><em>Instant Pay Reduces Financial Anxiety</em></p><p></p><p>Access to earned wages or real-time pay helps workers during difficult economic times.</p></td><td valign="top"><p><strong>Freight Factoring</strong></p><p><em>Instant Payments Provides Competitive Advantage</em></p><p></p><p>Payments over the IDN allow companies that use factoring to receive their payments instantly.</p></td></tr><tr><td valign="top"><p><strong>Merchant Funding</strong></p><p><em>Merchants/SMB Can Improve Cash Flow with IDN Payments</em></p><p></p><p>Real-time payments allow merchants to receive their funds 24/7, improving cash flow and removing payment delays.</p></td><td valign="top"><p><strong>Mortgage</strong></p><p><em>Real Estate Transactions Benefit from IDN</em></p><p></p><p>Real-time payments streamlines the real-estate closing process, and increases customer satisfaction.</p></td></tr><tr><td valign="top"><p><strong>Payroll</strong></p><p><em>Real-time Payments for Payroll</em></p><p></p><p>Payments over the IDN allow employers to send employees their pay at the end of their shift.</p></td><td valign="top"><p><strong>Sports Wagering</strong></p><p><em>Transfer Sports Wagering Winnings to Bank Accounts in Real Time</em></p><p></p><p>Instant payments eliminates the wait players have experienced when moving sports wagering winnings to bank accounts.</p></td></tr><tr><td valign="top"><p><strong>Transportation</strong></p><p><em>Instant Payments Keep Transportation Companies on the Move</em></p><p></p><p>Payments over the IDN allow transportation companies to pay for transportation-related costs within seconds.</p></td><td valign="top"> </td></tr></tbody></table>


# Push to Card

Push to Card is a 24/7 payment rail that lets you send funds in near real time from a XFT account to a beneficiary's eligible Visa, Mastercard, Amex debit card or reloadable prepaid card. &#x20;

A push payment is an original credit transaction (OCT). An OCT occurs when a business or an individual pushes, or sends, funds to a beneficiary’s 16-digit card number. It provides the beneficiary with access to the funds in 30 minutes or less.

**When to use Push to Card**

* **Insurance claims:** Issue instant claim reimbursements, billing refunds, and annuity payouts to policyholders.
* **Gig worker payments:** Pay gig workers instantly without their sensitive banking details.
* **Telecom promotions:** Offer financial incentives that entice mobile users to switch from competitors’ phone plans.
* **Government disbursements:** Disburse government payments to beneficiaries, including Social Security, unemployment, and disability.
* **Marketplace payouts:** Send payouts to marketplace sellers’ debit cards.
* **Airline payments:** Make payments to recipients for lost baggage, employee compensation, and more.

**Why use Push to Card**

* **Consolidation:** A supplement to a payments agenda that lets you see everything from a single XFT account.  &#x20;
* **Coverage:** A nearly ubiquitous solution that lets you cater to those with Visa and Mastercard debit cards and reloadable prepaid cards.
* **Speed:** Typical fund availability for cardholders in near real time with a payment network service-level agreement of 30 minutes in supported markets.
* **Ease of use:** The ability to identify beneficiaries through a 16-digit card number and expiration date rather than lengthy bank account and routing numbers.


# Push to Wallet

Push to Wallet is a 24/7/365 payment rail that lets you quickly send funds from a XFT IDN account to a beneficiary’s PayPal, Venmo, Zelle, or crypto wallet.

**When to use Push to Wallet**

* **Insurance claims:** Issue seamless claim payouts to policyholders.
* **Contractor payments:** Pay gig workers for short-term engagements or temporary contracts.
* **Promotions:** Offer financial incentives that entice mobile users to switch from competitors’ phone plans. 
* **Rebates:** Issue rebates to customers.
* **Travel reimbursements:** Send payouts to recipients for lost baggage, travel inconvenience, and more.

**Why use Push to Wallet**

* **Speed:** Quick availability of funds for beneficiaries.
* **Reach:** Access to a network of millions of external wallet users, including those who prefer alternate payment methods. 
* **Ease of use:** The ability to identify beneficiaries through email addresses and mobile phone numbers rather than lengthy account and routing numbers.

*<mark style="color:red;">**Zelle**</mark>*<mark style="color:red;">**® Disbursements**</mark> is a 24/7 payment rail that lets you quickly send funds from a XFT IDN account to a beneficiary's email address or mobile phone number through the *Zelle*® network.&#x20;

**Why use Zelle® Disbursements**

* Speed: Quick availability of funds for beneficiaries.
* Coverage: A large footprint in the United States that includes more than 1,800 banks and most consumer accounts.
* Ease of use: Easy identification of beneficiaries through email addresses and mobile phone numbers rather than lengthy account and routing numbers.

When to use Zelle® Disbursements

* Insurance claims: Offer consumers a seamless way to receive claim payments.
* Gig worker payments: Pay gig workers instantly without their sensitive banking details.
* Airline payments: Make payments to recipients for lost baggage, employee compensation, and more.

**How use Zelle® Disbursements**

1. A sender (individual, small business, or corporation) initiates a request to send money to a receiver (individual or small business).
2. The sender’s Financial Institution (FI) sends payment information to the *Zelle*® network.
3. The *Zelle*® network sends a message to the receiver’s FI.
4. The receiver’s FI processes the payment to the receiver.
5. Funds credited into receiver’s account.


# XFT Token Service

XFT Token Service generates TANs for legacy and blockchain payment rail interoperability. This means users can send stablecoins to a wallet using, for example, the associated ABA RTN. It is also used for onchain bank account creation.


# Supported Networks & Identifiers

{% columns %}
{% column %}
FedNow

SWIFT

Arbitrum

XFT L1

Canton
{% endcolumn %}

{% column %}
ABA RTN

SWIFT/BIC

IBAN

LEI

DTC ID

Tax ID

EVM Addresses
{% endcolumn %}
{% endcolumns %}


# Federal School Code Lists

Federal School *Code* (FSC) = Title IV Institution Code

### Unique Entity Identifier (UEI)

The Unique Entity Identifier (UEI) for an awardee or recipient is an alphanumeric code created in the System for Award Management (SAM.gov) that is used to uniquely identify specific commercial, nonprofit, or business entities registered to do business with the federal government.

### DUNS

DUNS stands for Data Universal Numbering System. It is a unique 9-digit identification number assigned to a company or organization by Dun & Bradstreet, Inc. A DUNS is required to register in the System for Award Management (SAM). An organization must be registered in SAM (and obtain a DUNS) to do business with the federal government. There is a separate DUNS number for each business location in the Dun & Bradstreet database. The DUNS number is random, and specific digits have no significance.

Office of Postsecondary Education Identifier&#x20;(OPEID)
-------------

<mark style="color:purple;">Definition</mark>\
Identification number used by the U.S. Department of Education's Office of Postsecondary Education (OPE) to identify schools that have Program Participation Agreements (PPA) so that its students are eligible to participate in Federal Student Financial Assistance programs under Title IV regulations. This is a 6-digit number followed by a 2-digit suffix used to identify branches, additional locations, and other entities that are part of the eligible institution.

* IPEDS, Integrated Postsecondary Education Data System
* OPEID, Office of Postsecondary Education Identifier

### What is a Federal School Code, and how do I find it?

<mark style="color:red;">A Federal School Code Is always six characters: 0 (zero), G, B, or E followed by a five-digit number. For example, 003223 is the Federal School Code for the University of Oregon.</mark>

If you don’t know a school’s Federal School Code, you can search by selecting the state and entering the school’s name or city in the [School Search](https://studentaid.gov/fafsa-apply/colleges).

If you are still having trouble finding a school code, contact your college’s and career school’s financial aid office. It is possible that your school does not participate in federal student aid programs and does not have a school code.

* Title IV Institution Code

Duke University Example

| UEI                                    | TP7EK8DZV6N5 |
| -------------------------------------- | ------------ |
| Legacy DUNS                            | 044387793    |
| Federal School Code                    | 002920       |
| EIN                                    | 56-0532129   |
| NAICS                                  | 611310       |
| SCHOOL OPE ID                          | 00292000     |
| **National Provider Identifier (NPI)** | 982862637    |

Federal Tax Identification Number: *560532129*

<https://medschool.duke.edu/research/research-support/research-support-offices/office-research-administration-ora/reference>

Entity Identification Numbers and Codes\
Primary Employer Identification Number (EIN) 56-0532129\
Federal/SAM.gov UEI TP7EK8DZV6N5\
IRS Tax Determination LetterAvailable Upon Request\
IRS W-9Available Upon Request\
Primary North American Industry Classification System (NAICS) Code 611310\
System for Award Management (SAM) StatusActive\
SAM Expiration Date08-01-2026

DOGE

GET /grants?sort\_by=value\&sort\_order=asc\&page=1\&per\_page=500

```json
{
    "date": "4/25/2025",
    "agency": "National Science Foundation",
    "recipient": "Duke University",
    "value": 6983,
    "savings": 6561.65,
    "link": "https://usaspending.gov/award/ASST_NON_2435273_4900",
    "description": "Collaborative Research: Conference: GA6 Geosciences and Environmental Justice for Indigenous Communities"
}
```

<https://www.usaspending.gov/recipient/6f191f83-6024-f2be-3012-4b740b10ac7a-R/latest>

<https://www.usaspending.gov/award/ASST_NON_2435273_4900>

Recipient Details\
Recipient\
DUKE UNIVERSITY\ <mark style="color:purple;">Recipient Identifier</mark>\ <mark style="color:purple;">TP7EK8DZV6N5 (UEI )</mark>\
Parent Recipient\
DUKE UNIVERSITY\
Parent Recipient Identifier\
Identifier not provided\
Recipient Address\
2200 W MAIN ST\
DURHAM, NC 27705-4640\
UNITED STATES\
Congressional District\
NC-04\
Business Types\
Higher Education\
Higher Education (Private)

RESOURCES

[Federal School Code Lists](https://fsapartners.ed.gov/knowledge-center/library/resource-type/Federal%20School%20Code%20Lists)

[Download Federal School Code 2025-2026](https://fsapartners.ed.gov/knowledge-center/library/federal-school-code-lists/2025-07-31/2025-26-federal-school-code-list-participating-schools-august-2025)

[Office of Postsecondary Education Identifier (OPEID)](https://ceds.ed.gov/element/000203)

<https://studentaid.gov/fafsa-apply/colleges/view-college-info?schoolCode=001051>

<https://nces.ed.gov/ipeds/datacenter/InstitutionByName.aspx>

<https://nces.ed.gov/ipeds/institution-profile/100733>

<https://bigfuture.collegeboard.org/colleges>

<https://studentaid.gov/fafsa-apply/colleges>

<https://studentaid.gov/data-center/school>

Federal School *Code* (FSC)

<https://api.doge.gov/savings/grants?sort_by=savings&sort_order=asc&page=1&per_page=500>

[https://api.doge.gov/savings/grants?sort\_by=value\&sort\_order=asc\&page=1\&per\_page=500](<https://api.doge.gov/savings/grants?sort_by=value\&sort_order=asc\&page=1\&per_page=500&#xD;&#xA;>)

[DUKE UNIVERSITY IDENTIFIERS](https://www.usaspending.gov/recipient/6f191f83-6024-f2be-3012-4b740b10ac7a-R/latest)

<https://giving.dukehealth.org/501c3-status>

<https://www.ed.gov/sites/ed/files/documents/press-releases/03122018-fws.pdf>

<https://wise.com/us/routing-number/253175449>


# Blockchain


# Deposits


# CBDCs

Comparing how a CBDC speeds up or slows down a bank run relative to cash

|                        | Cash       | CBDC      |
| ---------------------- | ---------- | --------- |
| Final Means of Payment | Speeds Up  | Speeds Up |
| Withdrawal Speeds      | Slows Down | Speeds Up |
| Security Costs         | Slows Down | Speeds Up |
| Storage Costs          | Slows Down | Speeds Up |

## Arbitrum Sepolia

<table><thead><tr><th width="133">Symbol</th><th width="279">Name</th><th>Address</th></tr></thead><tbody><tr><td>FEDX</td><td>Federal Reserve Digital Dollar</td><td>0x980F1Db04059B0656f161aCa1Fe0eC40241739E3</td></tr><tr><td>FEDXNY</td><td>Federal Reserve Bank of New York Digital Dollar</td><td>0x4F588935965dB1B185bAc7482A21C04D9EA83cd1</td></tr><tr><td>FEDXCL</td><td>Federal Reserve Bank of Cleveland Digital Dollar</td><td>0x6003DDFC1107A01C374A2A6Db64c7233e1e4988B</td></tr><tr><td>FEDXBS</td><td>Federal Reserve Bank of Boston Digital Dollar</td><td>0x553cb34b97465EC97bBF04E57324D8d7889468F9</td></tr><tr><td>FEDXPH</td><td>Federal Reserve Bank of Philadelphia Digital Dollar</td><td>0xd545B29ADf348F7F055A40d9bB7236E4750d9721</td></tr><tr><td>FEDXRC</td><td>Federal Reserve Bank of Richmond Digital Dollar</td><td>0x21fE76c7Eab350A6E8541a227988Db66E8aFFE0c</td></tr><tr><td>FEDXAT</td><td>Federal Reserve Bank of Atlanta Digital Dollar</td><td>0xAE6F71B5335A4e8e2c7Ab8a2796dbA3D2C3b0Bb5</td></tr><tr><td>FEDXCH</td><td>Federal Reserve Bank of Chicago Digital Dollar</td><td>0x743b25c3b02608a4d41FA4291a1c0B82BA44b8C1</td></tr><tr><td>FEDXSL</td><td>Federal Reserve Bank of St. Louis Digital Dollar</td><td>0xeDdE3D91F9cDA505459AD819087899e200c34460</td></tr><tr><td>FEDXMN</td><td>Federal Reserve Bank of Minneapolis Digital Dollar</td><td>0xF35428D950b5CC48A2c44f98CFFd7e1C91E288A9</td></tr><tr><td>FEDXKC</td><td>Federal Reserve Bank of Kansas City Digital Dollar</td><td>0x7c845b8aF9aE8f76545fdE8e90A1aAf1A18CA50c</td></tr><tr><td>FEDXDL</td><td>Federal Reserve Bank of Dallas Digital Dollar</td><td>0xF1462aFeA69b593Cf3FA19a45c39FaEc594f7936</td></tr><tr><td>FEDXSF</td><td>Federal Reserve Bank of San Francisco Digital Dollar</td><td>0x77b7924a2EE37b158b8e896afd2fCc02eC7A7c90</td></tr><tr><td>ECBX</td><td>European Central Bank Digital Euro</td><td>0x8097920AA03878695CF4aD9a6b2F2651A2282a2C</td></tr><tr><td>BOEX</td><td>Bank of England Digital Pound</td><td>0x4C572bD38E72366bF0Fb364783aC33aBCa7834aF</td></tr><tr><td>BOJX</td><td>Bank of Japan Digital Yen</td><td>0x2233CE252f6a43A7b93bc1cA52cBAfb0E25c0091</td></tr><tr><td>KRWX</td><td>Bank of Korea Digital Won</td><td>0x7704affBac0ee4A0d10Bc60C6506c213Eb686083</td></tr><tr><td>CADX</td><td>Bank of Canada Digital Dollar</td><td>0x6854e4828ba9AeEaEC7a42804944E8a29B08C7C7</td></tr><tr><td>EGPX</td><td>Central Bank of Egypt Digital Pound</td><td>0x90046a0d6528f44D06b2e92F780E76b6b3935C60</td></tr><tr><td>BRLX</td><td>Central Bank of Brazil Digital Real</td><td>0xb3184adda547766Fc8db0f3D3Af7A424e22d11D7</td></tr><tr><td>MXNX</td><td>Bank of Mexico Digital Peso</td><td>0x43ae6B277700887eF9a243F2341470160e3BF85f</td></tr><tr><td>ILSX</td><td>Bank of Israel Digital Shekel</td><td>0xc22d90c173d52AC1c85515dEEc4B0B8872467AB7</td></tr><tr><td>CHFX</td><td>Swiss National Bank Digital Franc</td><td>0xEf9e3F1c1Dc388C7c58853E1b693ffDb49A3e7E7</td></tr><tr><td>CNYX</td><td>People's Bank of China Digital Yuan</td><td>0x01664Afe22873e1839aB1b098cDB89372ADeaeE5</td></tr><tr><td>RUBX</td><td>Central Bank of the Russian Federation Digital Ruble</td><td>0xfdC96EA869982057613ea5B6170173806fB8b3eD</td></tr></tbody></table>

See [xft.finance/cbdc](https://xft.finance/cbdc) for full list of central bank digital currencies.


# FAQ

**Q: What is the International Deposits Network?** \
A: The International Deposits Network (IDN) is XFT's RTGS payment system for tokenized commercial bank deposits. It is used to put onchain tokenized products into traditional offchain bank accounts. Send cross-border real-time payments using IDN blockchain deposit accounts.

**Q: Why stablecoins?** \
A: Instant zero-fee 24/7/365 global programmable internet payments

**Q: Why XFT stablecoins?** \
A: Backed 1:1 w/ tokenized cash, cash equivalents for in-kind redemptions. Native U.S. Treasury Marketable Securities issuance. Deep direct, indirect liquidity corridors. Federal Reserve Discount Window access.

<figure><img src="/files/u6UO3JmDMVNDfzbQ5Xvp" alt=""><figcaption></figcaption></figure>

<mark style="color:$danger;">**Q: What is money streaming?**</mark>\
A: Money Streaming is a continuous transfer of tokens from a sender to a receiver at a defined per-second rate, resulting in a "stream". This stream is perpetual and persists until it's canceled by either the sender or the receiver, or until the sender's token balance is depleted.

Consider Alice wants to pay Bob a salary of 1200 ALLISONUSD per year using Money Streaming. She sets up a stream with a flow rate of 0.038 ALLISONUSD per second. Bob's balance starts increasing every second, and Alice's decreases, ensuring a steady transfer of salary.

DEFINITIONS

Seigniorage is the *positive return, or carry, on issued notes and coins* (money in circulation). Demurrage, the opposite, is the cost of holding currency.

*Seigniorage* is the profit made by a government from the difference between the face value of currency and the cost to produce it.

The central bank earns interest on the money it lends, or receives a return on the assets it acquires – and this is called *seigniorage* income.

Continuous Linked Settlement (CLS)

`Flow Rate:` The rate at which the sender's balance decreases and the receiver's increases per second.\
`Netflow Rate:` The rate of change of an account's DRS stablecoin token balance per second.\
`Sender:` The account initiating the stream, specifying a receiver and flow rate.\
`Receiver:` The account on the receiving end of a stream.\
`CRUD Timestamp:` The timestamp when a stream is created, updated, or deleted.\
`Real-Time Balance:` The change in the account's DRS stablecoin token since the last CRUD action.\
`Static Balance:` The DRS stablecoin token at the last CRUD timestamp.\
`Current Balance:` The sum of Static Balance and Streaming Real-Time Balance.

> NOTE: Flow rates are per second but can be represented in different time units for convenience. For example, "100 ROWEUSD/mo." is approximately "0.0039 UGIUSD/sec."

RESOURCES

<https://www.congress.gov/crs-product/R46850>

<https://www.imf.org/-/media/files/publications/ftn063/2025/english/ftnea2025011.pdf>

[Origins of the Federal Reserve Book-Entry System](https://www.newyorkfed.org/medialibrary/media/research/epr/04v10n3/0412garbpdf.pdf)

<https://www.chicagofed.org/publications/chicago-fed-letter/2018/395>

<https://www.newyorkfed.org/medialibrary/microsites/prc/files/2021/prc-fedwire-expanded-hours-considerations-white-paper>

<https://www.fincen.gov/system/files/shared/Appendix_D.pdf>

<https://www.citigroup.com/rcs/citigpa/storage/public/icpublic/The-Regulated-Liability-Network-Whitepaper.pdf>

<https://m10.io/media/pages/resources/whitepapers/rln/15d5120f0d-1646229532/implementingaregulated-liabilities-network.pdf>

<https://www.federalreserve.gov/federal-reserve-banks/fam/chapter-5-federal-reserve-notes.htm>

<https://www.rlnuspoc.org/home>


# Address Facilities

**ARBITRUM SEPOLIA**

XFTABARoutingFactory [0xb57fFF694c8726E302d1f0985323921482dE2f03](https://sepolia.arbiscan.io/address/0xb57fff694c8726e302d1f0985323921482de2f03)

XFTRoutingFactory [0xf052Bf5Da50Af04f74511ee60b85F54Fe1f4B47e](https://sepolia.arbiscan.io/address/0xf052bf5da50af04f74511ee60b85f54fe1f4b47e)


# XFTABARoutingFactory

XFTABARoutingFactory [0xb57fFF694c8726E302d1f0985323921482dE2f03](https://sepolia.arbiscan.io/address/0xb57fff694c8726e302d1f0985323921482de2f03)

**CONTRACT ABI**

```json
[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOperator","type":"error"},{"inputs":[],"name":"WalletExists","type":"error"},{"inputs":[],"name":"WalletNotFound","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"idType","type":"string"},{"indexed":false,"internalType":"string","name":"idValue","type":"string"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"idType","type":"string"},{"indexed":false,"internalType":"string","name":"idValue","type":"string"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"DeployWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"idType","type":"string"},{"indexed":false,"internalType":"string","name":"idValue","type":"string"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"inputs":[{"internalType":"string","name":"cik","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromCIK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromIBAN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromLEI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromRouting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromSWIFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"cikToWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"}],"name":"deployCIKWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"}],"name":"deployIBANWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"}],"name":"deployLEIWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"}],"name":"deployRoutingWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"}],"name":"deploySWIFTWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"}],"name":"getCIKWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"}],"name":"getIBANWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"}],"name":"getLEIWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"}],"name":"getRoutingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"}],"name":"getSWIFTWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"leiToWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToCIK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToIBAN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToLEI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToRouting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToSWIFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"}],"name":"predictCIK","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"}],"name":"predictIBAN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"}],"name":"predictLEI","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"}],"name":"predictRouting","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"}],"name":"predictSWIFT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
```


# XFTRoutingFactory

XFTRoutingFactory [0xf052Bf5Da50Af04f74511ee60b85F54Fe1f4B47e](https://sepolia.arbiscan.io/address/0xf052bf5da50af04f74511ee60b85f54fe1f4b47e)\
Operator [0x2f572059DbC598C8acfeA4AF06FE4f7669D1b3b1](https://sepolia.arbiscan.io/address/0x2f572059DbC598C8acfeA4AF06FE4f7669D1b3b1)\
Whitelisted stablecoin [0x4F1D5c7221dB8F3F28b2F0398Aa2bc321b72C523](https://sepolia.arbiscan.io/address/0x4F1D5c7221dB8F3F28b2F0398Aa2bc321b72C523)

<mark style="color:purple;">EXAMPLE TRANSACTIONS</mark>

[Create a bank account](https://sepolia.arbiscan.io/tx/0x3a0c4fb8d51a4e26ca3485b5cf3338786fd4708b9b6859fcf9474cffd17ab181)

[Mint to SWIFT](https://sepolia.arbiscan.io/tx/0x9d95aa013362d904a7acbd236a99fdb9029f58e602d8b1c36de1d639993bacc6)

[Burn to SWIFT](https://sepolia.arbiscan.io/tx/0xd1e0a2e73a1ad28552ebcc153d418591663c81b0702c811f7b969f2da98251a8)

**CONTRACT ABI**

```json
[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOperator","type":"error"},{"inputs":[],"name":"WalletExists","type":"error"},{"inputs":[],"name":"WalletNotFound","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"idType","type":"string"},{"indexed":false,"internalType":"string","name":"idValue","type":"string"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"idType","type":"string"},{"indexed":false,"internalType":"string","name":"idValue","type":"string"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"DeployWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"idType","type":"string"},{"indexed":false,"internalType":"string","name":"idValue","type":"string"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"inputs":[{"internalType":"string","name":"chips","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromCHIPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromCIK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fednow","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromFEDNOW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fedwire","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromFEDWIRE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromIBAN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromLEI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromRouting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromSWIFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"cikToWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"chips","type":"string"}],"name":"deployCHIPSWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"}],"name":"deployCIKWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fednow","type":"string"}],"name":"deployFEDNOWWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fedwire","type":"string"}],"name":"deployFEDWIREWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"}],"name":"deployIBANWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"}],"name":"deployLEIWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"}],"name":"deployRoutingWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"}],"name":"deploySWIFTWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"chips","type":"string"}],"name":"getCHIPSWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"}],"name":"getCIKWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"fednow","type":"string"}],"name":"getFEDNOWWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"fedwire","type":"string"}],"name":"getFEDWIREWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"}],"name":"getIBANWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"}],"name":"getLEIWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"}],"name":"getRoutingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"}],"name":"getSWIFTWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"leiToWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"chips","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToCHIPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToCIK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fednow","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToFEDNOW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fedwire","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToFEDWIRE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToIBAN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToLEI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToRouting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToSWIFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"chips","type":"string"}],"name":"predictCHIPS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"}],"name":"predictCIK","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"fednow","type":"string"}],"name":"predictFEDNOW","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"fedwire","type":"string"}],"name":"predictFEDWIRE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"}],"name":"predictIBAN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"}],"name":"predictLEI","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"}],"name":"predictRouting","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"}],"name":"predictSWIFT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
```


# XFTRoutingFactoryV2

XFT routing factory smart contracts are used for XFT Token Service TAN generation.

COUNTERPARTIES

XFTRoutingFactory [0x60AA889392144cE43AAEAb0e7215fcA034B2b354](https://sepolia.arbiscan.io/address/0x60aa889392144ce43aaeab0e7215fca034b2b354)\
XFTRoutingFactoryV2 \
VISA [0xDB9f69C2CCe2806107Fe8Df78f201664a8c16d62](https://sepolia.arbiscan.io/address/0xdb9f69c2cce2806107fe8df78f201664a8c16d62)

### Contract

FUNCTIONS

* Send debit card # + token amount to smart contract: from, to, amt
* Smart contract checks to see if debit card number exists. If no, reverts/doesnt go through
* If yes, smart contract finds the wallet address mapped to debit card number.&#x20;
* Smart contract transfers token amount from debit card wallet address 1 to debit card wallet address 2.&#x20;

***

<mark style="color:purple;">RESOURCES</mark>

Create Visa Direct business wallet given debit card number\
<https://sepolia.arbiscan.io/tx/0x472a4e6e8af6f4772d6af2a26b253508422d6fbd72cda2a5a60ad0f3b4342bac>

Prefund Visa Direct business wallet with Visa’s custom stablecoin\
<https://sepolia.arbiscan.io/tx/0x75a1d8eb7fd08358413a74b7c7ab211555081ae13dfa81c1a8c4a58fa7b5aa34>

XFT TOKEN SERVICE ABI \[contracts/XFTRoutingFactory.sol]

```json
[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOperator","type":"error"},{"inputs":[],"name":"WalletExists","type":"error"},{"inputs":[],"name":"WalletNotFound","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"idType","type":"string"},{"indexed":false,"internalType":"string","name":"idValue","type":"string"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"idType","type":"string"},{"indexed":false,"internalType":"string","name":"idValue","type":"string"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"DeployWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"idType","type":"string"},{"indexed":false,"internalType":"string","name":"idValue","type":"string"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"inputs":[{"internalType":"string","name":"chips","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromCHIPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromCIK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fednow","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromFEDNOW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fedwire","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromFEDWIRE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromIBAN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromLEI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromRouting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromSWIFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"visa","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"burnFromVISA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"cikToWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"chips","type":"string"}],"name":"deployCHIPSWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"}],"name":"deployCIKWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fednow","type":"string"}],"name":"deployFEDNOWWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fedwire","type":"string"}],"name":"deployFEDWIREWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"}],"name":"deployIBANWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"}],"name":"deployLEIWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"}],"name":"deployRoutingWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"}],"name":"deploySWIFTWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"visa","type":"string"}],"name":"deployVISAWallet","outputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"chips","type":"string"}],"name":"getCHIPSWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"}],"name":"getCIKWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"fednow","type":"string"}],"name":"getFEDNOWWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"fedwire","type":"string"}],"name":"getFEDWIREWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"}],"name":"getIBANWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"}],"name":"getLEIWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"}],"name":"getRoutingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"}],"name":"getSWIFTWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"visa","type":"string"}],"name":"getVISAWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"leiToWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"chips","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToCHIPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToCIK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fednow","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToFEDNOW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"fedwire","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToFEDWIRE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToIBAN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToLEI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToRouting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToSWIFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"visa","type":"string"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"mintToVISA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"chips","type":"string"}],"name":"predictCHIPS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cik","type":"string"}],"name":"predictCIK","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"fednow","type":"string"}],"name":"predictFEDNOW","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"fedwire","type":"string"}],"name":"predictFEDWIRE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"iban","type":"string"}],"name":"predictIBAN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"lei","type":"string"}],"name":"predictLEI","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"routing","type":"string"}],"name":"predictRouting","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"swift","type":"string"}],"name":"predictSWIFT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"visa","type":"string"}],"name":"predictVISA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
```

VISA DIGITAL DOLLAR ABI \[contracts/Dollar.sol]

```json
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"DollarBlockedSender","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"sharesNeeded","type":"uint256"}],"name":"DollarInsufficientBurnBalance","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"DollarInvalidBlockedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"DollarInvalidBurnSender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"DollarInvalidMintReceiver","type":"error"},{"inputs":[{"internalType":"uint256","name":"rewardMultiplier","type":"uint256"}],"name":"DollarInvalidRewardMultiplier","type":"error"},{"inputs":[],"name":"DollarPausedTransfers","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"sharesNeeded","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"blockTimestamp","type":"uint256"}],"name":"ERC2612ExpiredDeadline","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"ERC2612InvalidSignature","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"AccountBlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"AccountUnblocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RewardMultiplier","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"BLOCKLIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ORACLE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardMultiplierIncrement","type":"uint256"}],"name":"addRewardMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blockAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertToDollars","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"address","name":"owner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardMultiplier","type":"uint256"}],"name":"setRewardMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"sharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDollars","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"unblockAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}]
```

XFT TOKEN SERVICE V2 CONTRACT \[contracts/XFTRoutingFactoryV2.sol]

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

interface IERC20 {
    function mint(address to, uint256 amount) external;
    function burn(address from, uint256 amount) external;
    function transfer(address to, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

contract RoutingWallet {
    address public factory;
    address public owner;

    event WalletTransfer(address indexed token, address indexed to, uint256 amount);

    modifier onlyOwner() {
        require(msg.sender == owner, "not owner");
        _;
    }

    constructor(address _owner) {
        factory = msg.sender;
        owner = _owner;
    }

    function transfer(address token, address to, uint256 amount) external onlyOwner {
        require(IERC20(token).transfer(to, amount), "transfer failed");
        emit WalletTransfer(token, to, amount);
    }

    function balance(address token) external view returns (uint256) {
        return IERC20(token).balanceOf(address(this));
    }
}

contract XFTRoutingFactoryV2 {
    IERC20 public immutable token;
    address public operator;

    mapping(bytes32 => address) private routingToWallet;
    mapping(bytes32 => address) private ibanToWallet;
    mapping(bytes32 => address) private swiftToWallet;
    mapping(bytes32 => address) public cikToWallet;
    mapping(bytes32 => address) public leiToWallet;
    mapping(bytes32 => address) private fedNowToWallet;
    mapping(bytes32 => address) private fedwireToWallet;
    mapping(bytes32 => address) private chipsToWallet;
    mapping(bytes32 => address) private visaToWallet;

    event DeployWallet(string idType, string idValue, address wallet);
    event Mint(string idType, string idValue, address wallet, uint256 amount);
    event Burn(string idType, string idValue, address wallet, uint256 amount);

    error NotOperator();
    error WalletExists();
    error WalletNotFound();

    modifier onlyOp() {
        if (msg.sender != operator) revert NotOperator();
        _;
    }

    constructor(address _token) {
        token = IERC20(_token);
        operator = msg.sender;
    }

    function _salt(string memory id) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked(id));
    }

    function _predict(bytes32 salt) internal view returns (address) {
        return address(uint160(uint256(keccak256(
            abi.encodePacked(
                bytes1(0xff),
                address(this),
                salt,
                keccak256(abi.encodePacked(type(RoutingWallet).creationCode, abi.encode(operator)))
            )
        ))));
    }

    // ---------------- ROUTING ----------------
    function predictRouting(string memory routing) public view returns (address) {
        return _predict(_salt(routing));
    }
    function deployRoutingWallet(string memory routing) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(routing);
        if (routingToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        routingToWallet[salt] = wallet;
        emit DeployWallet("ROUTING", routing, wallet);
    }
    function mintToRouting(string memory routing, uint256 amt) external onlyOp {
        bytes32 salt = _salt(routing);
        address wallet = routingToWallet[salt];
        if (wallet == address(0)) wallet = deployRoutingWallet(routing);
        token.mint(wallet, amt);
        emit Mint("ROUTING", routing, wallet, amt);
    }
    function burnFromRouting(string memory routing, uint256 amt) external onlyOp {
        address wallet = routingToWallet[_salt(routing)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("ROUTING", routing, wallet, amt);
    }
    function getRoutingWallet(string memory routing) external view returns (address) {
        return routingToWallet[_salt(routing)];
    }

    // ---------------- IBAN ----------------
    function predictIBAN(string memory iban) public view returns (address) {
        return _predict(_salt(iban));
    }
    function deployIBANWallet(string memory iban) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(iban);
        if (ibanToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        ibanToWallet[salt] = wallet;
        emit DeployWallet("IBAN", iban, wallet);
    }
    function mintToIBAN(string memory iban, uint256 amt) external onlyOp {
        bytes32 salt = _salt(iban);
        address wallet = ibanToWallet[salt];
        if (wallet == address(0)) wallet = deployIBANWallet(iban);
        token.mint(wallet, amt);
        emit Mint("IBAN", iban, wallet, amt);
    }
    function burnFromIBAN(string memory iban, uint256 amt) external onlyOp {
        address wallet = ibanToWallet[_salt(iban)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("IBAN", iban, wallet, amt);
    }
    function getIBANWallet(string memory iban) external view returns (address) {
        return ibanToWallet[_salt(iban)];
    }

    // ---------------- SWIFT/BIC ----------------
    function predictSWIFT(string memory swift) public view returns (address) {
        return _predict(_salt(swift));
    }
    function deploySWIFTWallet(string memory swift) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(swift);
        if (swiftToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        swiftToWallet[salt] = wallet;
        emit DeployWallet("SWIFT", swift, wallet);
    }
    function mintToSWIFT(string memory swift, uint256 amt) external onlyOp {
        bytes32 salt = _salt(swift);
        address wallet = swiftToWallet[salt];
        if (wallet == address(0)) wallet = deploySWIFTWallet(swift);
        token.mint(wallet, amt);
        emit Mint("SWIFT", swift, wallet, amt);
    }
    function burnFromSWIFT(string memory swift, uint256 amt) external onlyOp {
        address wallet = swiftToWallet[_salt(swift)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("SWIFT", swift, wallet, amt);
    }
    function getSWIFTWallet(string memory swift) external view returns (address) {
        return swiftToWallet[_salt(swift)];
    }

    // ---------------- CIK ----------------
    function predictCIK(string memory cik) public view returns (address) {
        return _predict(_salt(cik));
    }
    function deployCIKWallet(string memory cik) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(cik);
        if (cikToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        cikToWallet[salt] = wallet;
        emit DeployWallet("CIK", cik, wallet);
    }
    function mintToCIK(string memory cik, uint256 amt) external onlyOp {
        bytes32 salt = _salt(cik);
        address wallet = cikToWallet[salt];
        if (wallet == address(0)) wallet = deployCIKWallet(cik);
        token.mint(wallet, amt);
        emit Mint("CIK", cik, wallet, amt);
    }
    function burnFromCIK(string memory cik, uint256 amt) external onlyOp {
        address wallet = cikToWallet[_salt(cik)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("CIK", cik, wallet, amt);
    }
    function getCIKWallet(string memory cik) external view returns (address) {
        return cikToWallet[_salt(cik)];
    }

    // ---------------- LEI ----------------
    function predictLEI(string memory lei) public view returns (address) {
        return _predict(_salt(lei));
    }
    function deployLEIWallet(string memory lei) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(lei);
        if (leiToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        leiToWallet[salt] = wallet;
        emit DeployWallet("LEI", lei, wallet);
    }
    function mintToLEI(string memory lei, uint256 amt) external onlyOp {
        bytes32 salt = _salt(lei);
        address wallet = leiToWallet[salt];
        if (wallet == address(0)) wallet = deployLEIWallet(lei);
        token.mint(wallet, amt);
        emit Mint("LEI", lei, wallet, amt);
    }
    function burnFromLEI(string memory lei, uint256 amt) external onlyOp {
        address wallet = leiToWallet[_salt(lei)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("LEI", lei, wallet, amt);
    }
    function getLEIWallet(string memory lei) external view returns (address) {
        return leiToWallet[_salt(lei)];
    }

    // ---------------- FEDNOW ----------------
    function predictFEDNOW(string memory fednow) public view returns (address) {
        return _predict(_salt(fednow));
    }
    function deployFEDNOWWallet(string memory fednow) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(fednow);
        if (fedNowToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        fedNowToWallet[salt] = wallet;
        emit DeployWallet("FEDNOW", fednow, wallet);
    }
    function mintToFEDNOW(string memory fednow, uint256 amt) external onlyOp {
        bytes32 salt = _salt(fednow);
        address wallet = fedNowToWallet[salt];
        if (wallet == address(0)) wallet = deployFEDNOWWallet(fednow);
        token.mint(wallet, amt);
        emit Mint("FEDNOW", fednow, wallet, amt);
    }
    function burnFromFEDNOW(string memory fednow, uint256 amt) external onlyOp {
        address wallet = fedNowToWallet[_salt(fednow)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("FEDNOW", fednow, wallet, amt);
    }
    function getFEDNOWWallet(string memory fednow) external view returns (address) {
        return fedNowToWallet[_salt(fednow)];
    }

    // ---------------- FEDWIRE ----------------
    function predictFEDWIRE(string memory fedwire) public view returns (address) {
        return _predict(_salt(fedwire));
    }
    function deployFEDWIREWallet(string memory fedwire) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(fedwire);
        if (fedwireToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        fedwireToWallet[salt] = wallet;
        emit DeployWallet("FEDWIRE", fedwire, wallet);
    }
    function mintToFEDWIRE(string memory fedwire, uint256 amt) external onlyOp {
        bytes32 salt = _salt(fedwire);
        address wallet = fedwireToWallet[salt];
        if (wallet == address(0)) wallet = deployFEDWIREWallet(fedwire);
        token.mint(wallet, amt);
        emit Mint("FEDWIRE", fedwire, wallet, amt);
    }
    function burnFromFEDWIRE(string memory fedwire, uint256 amt) external onlyOp {
        address wallet = fedwireToWallet[_salt(fedwire)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("FEDWIRE", fedwire, wallet, amt);
    }
    function getFEDWIREWallet(string memory fedwire) external view returns (address) {
        return fedwireToWallet[_salt(fedwire)];
    }

    // ---------------- CHIPS ----------------
    function predictCHIPS(string memory chips) public view returns (address) {
        return _predict(_salt(chips));
    }
    function deployCHIPSWallet(string memory chips) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(chips);
        if (chipsToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        chipsToWallet[salt] = wallet;
        emit DeployWallet("CHIPS", chips, wallet);
    }
    function mintToCHIPS(string memory chips, uint256 amt) external onlyOp {
        bytes32 salt = _salt(chips);
        address wallet = chipsToWallet[salt];
        if (wallet == address(0)) wallet = deployCHIPSWallet(chips);
        token.mint(wallet, amt);
        emit Mint("CHIPS", chips, wallet, amt);
    }
    function burnFromCHIPS(string memory chips, uint256 amt) external onlyOp {
        address wallet = chipsToWallet[_salt(chips)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("CHIPS", chips, wallet, amt);
    }
    function getCHIPSWallet(string memory chips) external view returns (address) {
        return chipsToWallet[_salt(chips)];
    }

    // ---------------- VISA ----------------
    function predictVISA(string memory visa) public view returns (address) {
        return _predict(_salt(visa));
    }
    function deployVISAWallet(string memory visa) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(visa);
        if (visaToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        visaToWallet[salt] = wallet;
        emit DeployWallet("VISA", visa, wallet);
    }
    function mintToVISA(string memory visa, uint256 amt) external onlyOp {
        bytes32 salt = _salt(visa);
        address wallet = visaToWallet[salt];
        if (wallet == address(0)) wallet = deployVISAWallet(visa);
        token.mint(wallet, amt);
        emit Mint("VISA", visa, wallet, amt);
    }
    function burnFromVISA(string memory visa, uint256 amt) external onlyOp {
        address wallet = visaToWallet[_salt(visa)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("VISA", visa, wallet, amt);
    }
    function getVISAWallet(string memory visa) external view returns (address) {
        return visaToWallet[_salt(visa)];
    }

}

```


# XFTRoutingFactoryV6

CORE FUNCTIONS

* Single operator&#x20;
* Single whitelisted token set on deployment via constructor
* More tokens can be added to token whitelist map after deployment
* Rail/wallet map is added on construction
* More rails can be added after deployment

MAPS

* Whitelisted tokens

```
NCUSD 0x53e84E18A2885463f791d3E295c63C82a79a2A67
FLUSD 0xe9f8063c0e987a487D886A021778379B52237A5f
PAUSD 0x47efCE54648139BfC65C0313c59810f592e55B3d
```

* Rails to create wallets to

```solidity
mapping(bytes32 => address) private routingToWallet;
mapping(bytes32 => address) private ibanToWallet;
mapping(bytes32 => address) private swiftToWallet;
mapping(bytes32 => address) public cikToWallet;
mapping(bytes32 => address) public leiToWallet;
mapping(bytes32 => address) private fedNowToWallet;
mapping(bytes32 => address) private fedwireToWallet;
mapping(bytes32 => address) private chipsToWallet;
mapping(bytes32 => address) private visaToWallet;
mapping(bytes32 => address) private sunpassToWallet;
mapping(bytes32 => address) private actcardToWallet;
```

COUNTERPARTIES

contracts/XFTRoutingFactoryV6.sol:XFTRoutingFactoryV6\
Operator 0x2f572059DbC598C8acfeA4AF06FE4f7669D1b3b1\
NCUSD 0x53e84E18A2885463f791d3E295c63C82a79a2A67\
FLUSD 0xe9f8063c0e987a487D886A021778379B52237A5f\
PAUSD 0x47efCE54648139BfC65C0313c59810f592e55B3d

RESOURCES

contracts\XFTRoutingFactoryV5.sol:IERC20

```javascript
interface IERC20 {
    function mint(address to, uint256 amount) external;
    function burn(address from, uint256 amount) external;
    function transfer(address to, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}
```

NC Quick Pass <https://www.ncquickpass.com/>

NCUSD 0x53e84E18A2885463f791d3E295c63C82a79a2A67

contracts\XFTRoutingFactoryV5.sol

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

interface IERC20 {
    function mint(address to, uint256 amount) external;
    function burn(address from, uint256 amount) external;
    function transfer(address to, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

contract RoutingWallet {
    address public factory;
    address public owner;

    event WalletTransfer(address indexed token, address indexed to, uint256 amount);

    modifier onlyOwner() {
        require(msg.sender == owner, "not owner");
        _;
    }

    modifier onlyOwnerOrFactory() {
        require(msg.sender == owner || msg.sender == factory, "not authorized");
        _;
    }

    constructor(address _owner) {
        factory = msg.sender;
        owner = _owner;
    }

    function transfer(address token, address to, uint256 amount) external onlyOwnerOrFactory {
        require(IERC20(token).transfer(to, amount), "transfer failed");
        emit WalletTransfer(token, to, amount);
    }

    function balance(address token) external view returns (uint256) {
        return IERC20(token).balanceOf(address(this));
    }
}

contract XFTRoutingFactoryV5 {
    IERC20 public immutable token;
    address public operator;

    mapping(bytes32 => address) private routingToWallet;
    mapping(bytes32 => address) private ibanToWallet;
    mapping(bytes32 => address) private swiftToWallet;
    mapping(bytes32 => address) public cikToWallet;
    mapping(bytes32 => address) public leiToWallet;
    mapping(bytes32 => address) private fedNowToWallet;
    mapping(bytes32 => address) private fedwireToWallet;
    mapping(bytes32 => address) private chipsToWallet;
    mapping(bytes32 => address) private visaToWallet;
    mapping(bytes32 => address) private sunpassToWallet;
    mapping(bytes32 => address) private actcardToWallet;

    struct WalletRec { string rail; string id; address wallet; }

    WalletRec[] private _allWallets;
    mapping(bytes32 => WalletRec[]) private _walletsByRail;

    function _record(string memory rail, string memory id, address wallet) internal {
        _allWallets.push(WalletRec(rail, id, wallet));
        _walletsByRail[keccak256(bytes(rail))].push(WalletRec(rail, id, wallet));
    }

    event DeployWallet(string idType, string idValue, address wallet);
    event Mint(string idType, string idValue, address wallet, uint256 amount);
    event Burn(string idType, string idValue, address wallet, uint256 amount);
    event Transfer(string idType, string fromId, string toId, address fromWallet, address toWallet, uint256 amount);

    error NotOperator();
    error WalletExists();
    error WalletNotFound();

    modifier onlyOp() {
        if (msg.sender != operator) revert NotOperator();
        _;
    }

    constructor(address _token) {
        token = IERC20(_token);
        operator = msg.sender;
    }

    function _salt(string memory id) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked(id));
    }

    function _predict(bytes32 salt) internal view returns (address) {
        return address(uint160(uint256(keccak256(
            abi.encodePacked(
                bytes1(0xff),
                address(this),
                salt,
                keccak256(abi.encodePacked(type(RoutingWallet).creationCode, abi.encode(operator)))
            )
        ))));
    }

    // ---------------- ROUTING ----------------
    function predictRouting(string memory routing) public view returns (address) {
        return _predict(_salt(routing));
    }
    function deployRoutingWallet(string memory routing) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(routing);
        if (routingToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        routingToWallet[salt] = wallet;
        _record("ROUTING", routing, wallet);
        emit DeployWallet("ROUTING", routing, wallet);
    }
    function mintToRouting(string memory routing, uint256 amt) external onlyOp {
        bytes32 salt = _salt(routing);
        address wallet = routingToWallet[salt];
        if (wallet == address(0)) wallet = deployRoutingWallet(routing);
        token.mint(wallet, amt);
        emit Mint("ROUTING", routing, wallet, amt);
    }
    function burnFromRouting(string memory routing, uint256 amt) external onlyOp {
        address wallet = routingToWallet[_salt(routing)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("ROUTING", routing, wallet, amt);
    }
    function getRoutingWallet(string memory routing) external view returns (address) {
        return routingToWallet[_salt(routing)];
    }

    // ---------------- IBAN ----------------
    function predictIBAN(string memory iban) public view returns (address) {
        return _predict(_salt(iban));
    }
    function deployIBANWallet(string memory iban) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(iban);
        if (ibanToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        ibanToWallet[salt] = wallet;
        _record("IBAN", iban, wallet);
        emit DeployWallet("IBAN", iban, wallet);
    }
    function mintToIBAN(string memory iban, uint256 amt) external onlyOp {
        bytes32 salt = _salt(iban);
        address wallet = ibanToWallet[salt];
        if (wallet == address(0)) wallet = deployIBANWallet(iban);
        token.mint(wallet, amt);
        emit Mint("IBAN", iban, wallet, amt);
    }
    function burnFromIBAN(string memory iban, uint256 amt) external onlyOp {
        address wallet = ibanToWallet[_salt(iban)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("IBAN", iban, wallet, amt);
    }
    function getIBANWallet(string memory iban) external view returns (address) {
        return ibanToWallet[_salt(iban)];
    }

    // ---------------- SWIFT/BIC ----------------
    function predictSWIFT(string memory swift) public view returns (address) {
        return _predict(_salt(swift));
    }
    function deploySWIFTWallet(string memory swift) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(swift);
        if (swiftToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        swiftToWallet[salt] = wallet;
        _record("SWIFT", swift, wallet);
        emit DeployWallet("SWIFT", swift, wallet);
    }
    function mintToSWIFT(string memory swift, uint256 amt) external onlyOp {
        bytes32 salt = _salt(swift);
        address wallet = swiftToWallet[salt];
        if (wallet == address(0)) wallet = deploySWIFTWallet(swift);
        token.mint(wallet, amt);
        emit Mint("SWIFT", swift, wallet, amt);
    }
    function burnFromSWIFT(string memory swift, uint256 amt) external onlyOp {
        address wallet = swiftToWallet[_salt(swift)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("SWIFT", swift, wallet, amt);
    }
    function getSWIFTWallet(string memory swift) external view returns (address) {
        return swiftToWallet[_salt(swift)];
    }

    // ---------------- CIK ----------------
    function predictCIK(string memory cik) public view returns (address) {
        return _predict(_salt(cik));
    }
    function deployCIKWallet(string memory cik) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(cik);
        if (cikToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        cikToWallet[salt] = wallet;
        _record("CIK", cik, wallet);
        emit DeployWallet("CIK", cik, wallet);
    }
    function mintToCIK(string memory cik, uint256 amt) external onlyOp {
        bytes32 salt = _salt(cik);
        address wallet = cikToWallet[salt];
        if (wallet == address(0)) wallet = deployCIKWallet(cik);
        token.mint(wallet, amt);
        emit Mint("CIK", cik, wallet, amt);
    }
    function burnFromCIK(string memory cik, uint256 amt) external onlyOp {
        address wallet = cikToWallet[_salt(cik)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("CIK", cik, wallet, amt);
    }
    function getCIKWallet(string memory cik) external view returns (address) {
        return cikToWallet[_salt(cik)];
    }

    // ---------------- LEI ----------------
    function predictLEI(string memory lei) public view returns (address) {
        return _predict(_salt(lei));
    }
    function deployLEIWallet(string memory lei) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(lei);
        if (leiToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        leiToWallet[salt] = wallet;
        _record("LEI", lei, wallet);
        emit DeployWallet("LEI", lei, wallet);
    }
    function mintToLEI(string memory lei, uint256 amt) external onlyOp {
        bytes32 salt = _salt(lei);
        address wallet = leiToWallet[salt];
        if (wallet == address(0)) wallet = deployLEIWallet(lei);
        token.mint(wallet, amt);
        emit Mint("LEI", lei, wallet, amt);
    }
    function burnFromLEI(string memory lei, uint256 amt) external onlyOp {
        address wallet = leiToWallet[_salt(lei)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("LEI", lei, wallet, amt);
    }
    function getLEIWallet(string memory lei) external view returns (address) {
        return leiToWallet[_salt(lei)];
    }

    // ---------------- FEDNOW ----------------
    function predictFEDNOW(string memory fednow) public view returns (address) {
        return _predict(_salt(fednow));
    }
    function deployFEDNOWWallet(string memory fednow) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(fednow);
        if (fedNowToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        fedNowToWallet[salt] = wallet;
        _record("FEDNOW", fednow, wallet);
        emit DeployWallet("FEDNOW", fednow, wallet);
    }
    function mintToFEDNOW(string memory fednow, uint256 amt) external onlyOp {
        bytes32 salt = _salt(fednow);
        address wallet = fedNowToWallet[salt];
        if (wallet == address(0)) wallet = deployFEDNOWWallet(fednow);
        token.mint(wallet, amt);
        emit Mint("FEDNOW", fednow, wallet, amt);
    }
    function burnFromFEDNOW(string memory fednow, uint256 amt) external onlyOp {
        address wallet = fedNowToWallet[_salt(fednow)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("FEDNOW", fednow, wallet, amt);
    }
    function getFEDNOWWallet(string memory fednow) external view returns (address) {
        return fedNowToWallet[_salt(fednow)];
    }

    // ---------------- FEDWIRE ----------------
    function predictFEDWIRE(string memory fedwire) public view returns (address) {
        return _predict(_salt(fedwire));
    }
    function deployFEDWIREWallet(string memory fedwire) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(fedwire);
        if (fedwireToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        fedwireToWallet[salt] = wallet;
        _record("FEDWIRE", fedwire, wallet);
        emit DeployWallet("FEDWIRE", fedwire, wallet);
    }
    function mintToFEDWIRE(string memory fedwire, uint256 amt) external onlyOp {
        bytes32 salt = _salt(fedwire);
        address wallet = fedwireToWallet[salt];
        if (wallet == address(0)) wallet = deployFEDWIREWallet(fedwire);
        token.mint(wallet, amt);
        emit Mint("FEDWIRE", fedwire, wallet, amt);
    }
    function burnFromFEDWIRE(string memory fedwire, uint256 amt) external onlyOp {
        address wallet = fedwireToWallet[_salt(fedwire)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("FEDWIRE", fedwire, wallet, amt);
    }
    function getFEDWIREWallet(string memory fedwire) external view returns (address) {
        return fedwireToWallet[_salt(fedwire)];
    }

    // ---------------- CHIPS ----------------
    function predictCHIPS(string memory chips) public view returns (address) {
        return _predict(_salt(chips));
    }
    function deployCHIPSWallet(string memory chips) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(chips);
        if (chipsToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        chipsToWallet[salt] = wallet;
        _record("CHIPS", chips, wallet);
        emit DeployWallet("CHIPS", chips, wallet);
    }
    function mintToCHIPS(string memory chips, uint256 amt) external onlyOp {
        bytes32 salt = _salt(chips);
        address wallet = chipsToWallet[salt];
        if (wallet == address(0)) wallet = deployCHIPSWallet(chips);
        token.mint(wallet, amt);
        emit Mint("CHIPS", chips, wallet, amt);
    }
    function burnFromCHIPS(string memory chips, uint256 amt) external onlyOp {
        address wallet = chipsToWallet[_salt(chips)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("CHIPS", chips, wallet, amt);
    }
    function getCHIPSWallet(string memory chips) external view returns (address) {
        return chipsToWallet[_salt(chips)];
    }

    // ---------------- VISA ----------------
    function predictVISA(string memory visa) public view returns (address) {
        return _predict(_salt(visa));
    }
    function deployVISAWallet(string memory pan) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(pan);
        if (visaToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        visaToWallet[salt] = wallet;
        _record("VISA", pan, wallet);
        emit DeployWallet("VISA", pan, wallet);
    }
    function mintToVISA(string memory visa, uint256 amt) external onlyOp {
        bytes32 salt = _salt(visa);
        address wallet = visaToWallet[salt];
        if (wallet == address(0)) wallet = deployVISAWallet(visa);
        token.mint(wallet, amt);
        emit Mint("VISA", visa, wallet, amt);
    }
    function burnFromVISA(string memory visa, uint256 amt) external onlyOp {
        address wallet = visaToWallet[_salt(visa)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("VISA", visa, wallet, amt);
    }
    function getVISAWallet(string memory visa) external view returns (address) {
        return visaToWallet[_salt(visa)];
    }
    function transferVISA(
        string memory fromVisa,
        string memory toVisa, 
        uint256 amount
    ) external onlyOp {
        address fromWallet = visaToWallet[_salt(fromVisa)];
        address toWallet = visaToWallet[_salt(toVisa)];
        
        if (fromWallet == address(0)) revert WalletNotFound();
        if (toWallet == address(0)) revert WalletNotFound();
        
        RoutingWallet(fromWallet).transfer(address(token), toWallet, amount);
        emit Transfer("VISA", fromVisa, toVisa, fromWallet, toWallet, amount);
    }

    // ---------------- SUNPASS ----------------
    function predictSUNPASS(string memory sunpass) public view returns (address) {
        return _predict(_salt(sunpass));
    }
    function deploySUNPASSWallet(string memory pan) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(pan);
        if (sunpassToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        sunpassToWallet[salt] = wallet;
        _record("SUNPASS", pan, wallet);
        emit DeployWallet("SUNPASS", pan, wallet);
    }
    function mintToSUNPASS(string memory sunpass, uint256 amt) external onlyOp {
        bytes32 salt = _salt(sunpass);
        address wallet = sunpassToWallet[salt];
        if (wallet == address(0)) wallet = deploySUNPASSWallet(sunpass);
        token.mint(wallet, amt);
        emit Mint("SUNPASS", sunpass, wallet, amt);
    }
    function burnFromSUNPASS(string memory sunpass, uint256 amt) external onlyOp {
        address wallet = sunpassToWallet[_salt(sunpass)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("SUNPASS", sunpass, wallet, amt);
    }
    function getSUNPASSWallet(string memory sunpass) external view returns (address) {
        return sunpassToWallet[_salt(sunpass)];
    }
    function transferSUNPASS(
        string memory fromSunPass,
        string memory toSunPass, 
        uint256 amount
    ) external onlyOp {
        address fromWallet = sunpassToWallet[_salt(fromSunPass)];
        address toWallet = sunpassToWallet[_salt(toSunPass)];
        
        if (fromWallet == address(0)) revert WalletNotFound();
        if (toWallet == address(0)) revert WalletNotFound();
        
        RoutingWallet(fromWallet).transfer(address(token), toWallet, amount);
        emit Transfer("SUNPASS", fromSunPass, toSunPass, fromWallet, toWallet, amount);
    }

    // ---------------- ACT CARD ----------------
    function predictACTCARD(string memory actcard) public view returns (address) {
        return _predict(_salt(actcard));
    }
    function deployACTCARDWallet(string memory pan) public onlyOp returns (address wallet) {
        bytes32 salt = _salt(pan);
        if (actcardToWallet[salt] != address(0)) revert WalletExists();
        wallet = address(new RoutingWallet{salt: salt}(operator));
        actcardToWallet[salt] = wallet;
        _record("ACTCARD", pan, wallet);
        emit DeployWallet("ACTCARD", pan, wallet);
    }
    function mintToACTCARD(string memory actcard, uint256 amt) external onlyOp {
        bytes32 salt = _salt(actcard);
        address wallet = actcardToWallet[salt];
        if (wallet == address(0)) wallet = deployACTCARDWallet(actcard);
        token.mint(wallet, amt);
        emit Mint("ACTCARD", actcard, wallet, amt);
    }
    function burnFromACTCARD(string memory actcard, uint256 amt) external onlyOp {
        address wallet = actcardToWallet[_salt(actcard)];
        if (wallet == address(0)) revert WalletNotFound();
        token.burn(wallet, amt);
        emit Burn("ACTCARD", actcard, wallet, amt);
    }
    function getACTCARDWallet(string memory actcard) external view returns (address) {
        return actcardToWallet[_salt(actcard)];
    }
    function transferACTCARD(
        string memory fromACTCard,
        string memory toACTCard, 
        uint256 amount
    ) external onlyOp {
        address fromWallet = actcardToWallet[_salt(fromACTCard)];
        address toWallet = actcardToWallet[_salt(toACTCard)];
        
        if (fromWallet == address(0)) revert WalletNotFound();
        if (toWallet == address(0)) revert WalletNotFound();
        
        RoutingWallet(fromWallet).transfer(address(token), toWallet, amount);
        emit Transfer("ACTCARD", fromACTCard, toACTCard, fromWallet, toWallet, amount);
    }
    // ---------------- WALLETS ----------------
    function getAllWallets() external view returns (WalletRec[] memory) {
        return _allWallets;
    }
    function getWalletsByRail(string memory rail) external view returns (WalletRec[] memory) {
        return _walletsByRail[keccak256(bytes(rail))];
    }
    function getVisaWallets() external view returns (WalletRec[] memory) {
        return _walletsByRail[keccak256(bytes("VISA"))];
    }
    function getSunPassWallets() external view returns (WalletRec[] memory) {
        return _walletsByRail[keccak256(bytes("SUNPASS"))];
    }
    function getACTCardWallets() external view returns (WalletRec[] memory) {
        return _walletsByRail[keccak256(bytes("ACTCARD"))];
    }
}

```


# scripts/run-reed.js

script/run-reed.js

SOFTWARE SEQUENCE

1\. Connect to existing factory OR deploy new one\
2\. Grant factory permission to mint/burn tokens\
3\. Generate unique test IDs (prevents collisions)\
4\. For each rail: deploy wallet → mint → transfer (if supported) → burn\
5\. List all wallets created\
6\. Report failure count

<details>

<summary>factory</summary>

Script always runs in **smoke mode** with tiny mint/transfer amounts for fast, cheap testing.

* You control behavior only by editing the **CONFIG block at the top**.

FACTORY ADDRESS HANDLING (REDEPLOY VS NON-REDEPLOY)

* `FACTORY = 0x0000000000000000000000000000000000000000` is a **sentinel value meaning “no factory yet.”**
* If `DEPLOY_FACTORY = true` **or** FACTORY is all-zeros → script **deploys a brand-new XFTRoutingFactoryV6** using `TOKEN`.
* If `DEPLOY_FACTORY = false` **and** FACTORY is a real address → script **attaches to the existing factory** at that address.
* When attaching, script **reads `factory.token()` on-chain** and hard-fails if it does **not match CONFIG.TOKEN**.
* This guarantees you never accidentally run against the wrong token or factory.

HOW RANDOM IDS PREVENT COLLISIONS

* Each run creates a unique `runTag = chainId + factory + timestamp + random`.
* Rail IDs are generated like: `RAIL_VISA_<runTag>_1`.
* No two runs can ever reuse the same wallet salt, even on the same factory.
* This prevents CREATE2 collisions forever.

HOW TO RUN ONLY SPECIFIC RAILS (VISA + AMEX + CITIBIKE)

* Edit **one line only**:

`CONFIG.RAILS = ["VISA", "AMEX", "CITIBIKE"];`

* If `CONFIG.RAILS = null` → all rails run.
* If array is set → only those rails execute.
* Matching is against `factory.getAllRails()` + `RAIL_CONFIG`.

USER FLOW

1. Set `TOKEN` in CONFIG.
2. Decide:
   * New factory → `DEPLOY_FACTORY = true`, leave FACTORY as zero.
   * Existing factory → `DEPLOY_FACTORY = false`, paste FACTORY address.
3. Optionally set:
   * `CONFIG.RAILS = ["VISA","AMEX","CITIBIKE"];`
4. Run:
   * `npx hardhat run scripts/run-reed.js --network arbitrum_sepolia`
5. Script:
   * Deploys or attaches to factory.
   * Verifies token match.
   * Grants mint/burn roles if missing.
   * Generates unique IDs.
   * Runs mint → transfer (if supported) → burn per rail.
   * Prints all wallet mappings.
6. Exit with failure count.

WHY THIS MODEL IS SAFE

* Zero-address = explicit “deploy mode.”
* Real address = explicit “production attach mode.”
* Token address is always on-chain verified before execution.
* Synthetic IDs guarantee no real-world identifier or wallet collision.

</details>

<details>

<summary>wallets</summary>

CORE FEATURES

1\. run rail flows on existing wallets (no deploy)\
2\. run rail flows on new wallets (deploy)\
\
NO DEPLOY

1 pull existing wallets given rail\
2 run normal test basic/transfer flows on those addresses

```
async function buildWalletIndex(factory) {
  const index = {};
  const all = await factory.getAllWallets();
  for (const r of all) {
    const rail = r.rail.toUpperCase();
    if (!index[rail]) index[rail] = [];
    index[rail].push({ id: r.id, wallet: r.wallet });
  }
  return index;
}

```

</details>

<details>

<summary>wallet2</summary>

* Add a simple mode switch and “existing wallet” helpers.

{% code expandable="true" %}

```js
const CONFIG = {
  TOKEN: "0x86449a994fED1c90f5DdCB3cc5bd4fD236aE4B0f",
  FACTORY: "0x562638D7a31791C5484F6DDd93F175a6f83D3FA0",
  DEPLOY_FACTORY: false,
  VERIFY_FACTORY: false,
  RAILS: ["VISA","AMEX","CITIBIKE"],
  MINT: "10",
  XFER: "3",
  WALLET_MODE: "new"      // "new" | "existing" | "auto"
};
```

{% endcode %}

* Build an index of existing wallets per rail:

{% code expandable="true" %}

```js
async function buildWalletIndex(factory) {
  const index = {};
  const all = await factory.getAllWallets();
  for (const r of all) {
    const rail = r.rail.toUpperCase();
    if (!index[rail]) index[rail] = [];
    index[rail].push({ id: r.id, wallet: r.wallet });
  }
  return index;
}
```

{% endcode %}

* Existing-wallet basic rail test (no deploy, reuse first ID):

{% code expandable="true" %}

```js
async function testExistingBasicRail(factory, Token, railCode, railCfg, existingMap, MINT_AMT) {
  const name = railCfg.method;
  const list = existingMap[railCode];
  if (!list || list.length === 0) {
    console.log(`No existing wallets for ${railCode}, skipping`);
    return;
  }
  const { id, wallet } = list[0];
  console.log(`\nBASIC EXISTING ${railCode} id=${id} wallet=${wallet}`);
  const mintFn = factory[`mintTo${name}`];
  const burnFn = factory[`burnFrom${name}`];
  if (!mintFn || !burnFn) {
    console.log(`Missing methods for ${railCode}, skipping`);
    return;
  }
  const mintTx = await mintFn(id, MINT_AMT);
  await mintTx.wait();
  const balAfterMint = await Token.balanceOf(wallet);
  console.log("bal mint", hre.ethers.utils.formatUnits(balAfterMint, 18));
  const burnTx = await burnFn(id, MINT_AMT);
  await burnTx.wait();
  const balAfterBurn = await Token.balanceOf(wallet);
  console.log("bal burn", hre.ethers.utils.formatUnits(balAfterBurn, 18));
}
```

{% endcode %}

* Existing-wallet transfer rail test (no deploy, reuse first two IDs):

```js
async function testExistingTransferRail(factory, Token, railCode, railCfg, existingMap, MINT_AMT, XFER_AMT) {
  const name = railCfg.method;
  const list = existingMap[railCode];
  if (!list || list.length < 2) {
    console.log(`Need at least 2 existing wallets for ${railCode}, skipping`);
    return;
  }
  const { id: idA, wallet: walletA } = list[0];
  const { id: idB, wallet: walletB } = list[1];
  console.log(`\nTRANSFER EXISTING ${railCode} A=${idA} B=${idB}`);
  const mintFn = factory[`mintTo${name}`];
  const burnFn = factory[`burnFrom${name}`];
  const transferFn = factory[`transfer${name}`];
  if (!mintFn || !burnFn || !transferFn) {
    console.log(`Missing methods for ${railCode}, skipping existing flow`);
    return;
  }
  const mintTx = await mintFn(idA, MINT_AMT);
  await mintTx.wait();
  const balA1 = await Token.balanceOf(walletA);
  const balB1 = await Token.balanceOf(walletB);
  console.log("A bal mint", hre.ethers.utils.formatUnits(balA1, 18));
  console.log("B bal mint", hre.ethers.utils.formatUnits(balB1, 18));
  const xferTx = await transferFn(idA, idB, XFER_AMT);
  await xferTx.wait();
  const balA2 = await Token.balanceOf(walletA);
  const balB2 = await Token.balanceOf(walletB);
  console.log("A bal xfer", hre.ethers.utils.formatUnits(balA2, 18));
  console.log("B bal xfer", hre.ethers.utils.formatUnits(balB2, 18));
  const burnA = MINT_AMT.sub(XFER_AMT);
  const burnB = XFER_AMT;
  const burnTxA = await burnFn(idA, burnA);
  await burnTxA.wait();
  const burnTxB = await burnFn(idB, burnB);
  await burnTxB.wait();
  const balA3 = await Token.balanceOf(walletA);
  const balB3 = await Token.balanceOf(walletB);
  console.log("A bal burn", hre.ethers.utils.formatUnits(balA3, 18));
  console.log("B bal burn", hre.ethers.utils.formatUnits(balB3, 18));
}
```

* Tweak `main` to choose mode:

```js
async function main() {
  const [deployer] = await hre.ethers.getSigners();
  console.log("Deployer", deployer.address);
  let factory;
  let tokenAddr = CONFIG.TOKEN;

  if (!CONFIG.DEPLOY_FACTORY && CONFIG.FACTORY && CONFIG.FACTORY !== "0x0000000000000000000000000000000000000000") {
    factory = await hre.ethers.getContractAt("contracts/XFTRoutingFactoryV6.sol:XFTRoutingFactoryV6", CONFIG.FACTORY);
    console.log("Using existing factory", factory.address);
    const onChainToken = await factory.token();
    if (tokenAddr && tokenAddr.toLowerCase() !== onChainToken.toLowerCase()) {
      throw new Error(`TOKEN mismatch: config=${tokenAddr} onchain=${onChainToken}`);
    }
    tokenAddr = onChainToken;
  } else {
    if (!tokenAddr) throw new Error("CONFIG.TOKEN required when deploying factory");
    const Factory = await hre.ethers.getContractFactory("contracts/XFTRoutingFactoryV6.sol:XFTRoutingFactoryV6");
    factory = await Factory.deploy(tokenAddr);
    await factory.deployed();
    console.log("Deployed factory", factory.address);
    if (CONFIG.VERIFY_FACTORY) {
      try {
        await factory.deployTransaction.wait(5);
        await hre.run("verify:verify", {
          address: factory.address,
          constructorArguments: [tokenAddr],
          contract: "contracts/XFTRoutingFactoryV6.sol:XFTRoutingFactoryV6"
        });
        console.log("Verified factory");
      } catch (e) {
        console.log("Verify failed:", e.message || e);
      }
    }
  }

  const Token = await hre.ethers.getContractAt("contracts/USDX.sol:USDX", tokenAddr);
  console.log("Token", tokenAddr);
  await ensureRoles(Token, factory.address);

  const network = await hre.ethers.provider.getNetwork();
  const chainId = network.chainId;
  const runTag = makeRunTag(chainId, factory.address);
  console.log("RunTag", runTag, "mode smoke");

  let rails = [];
  try {
    rails = await factory.getAllRails();
  } catch (e) {
    console.log("getAllRails failed, using config keys:", e.message || e);
    rails = Object.keys(RAIL_CONFIG);
  }

  let selectedRails = rails.map(r => r.toUpperCase()).filter(r => RAIL_CONFIG[r]);
  if (Array.isArray(CONFIG.RAILS) && CONFIG.RAILS.length > 0) {
    const set = new Set(CONFIG.RAILS.map(r => r.toUpperCase()));
    selectedRails = selectedRails.filter(r => set.has(r));
  }
  console.log("Rails", selectedRails.join(", "));

  const MINT_AMT = hre.ethers.utils.parseUnits(CONFIG.MINT, 18);
  const XFER_AMT = hre.ethers.utils.parseUnits(CONFIG.XFER, 18);

  const walletMode = CONFIG.WALLET_MODE || "new";
  let existingMap = null;
  if (walletMode !== "new") {
    existingMap = await buildWalletIndex(factory);
  }

  let failures = 0;

  for (const rail of selectedRails) {
    const cfg = RAIL_CONFIG[rail];
    try {
      if (walletMode === "existing") {
        if (cfg.transfer) {
          await testExistingTransferRail(factory, Token, rail, cfg, existingMap, MINT_AMT, XFER_AMT);
        } else {
          await testExistingBasicRail(factory, Token, rail, cfg, existingMap, MINT_AMT);
        }
      } else if (walletMode === "auto" && existingMap && existingMap[rail] && existingMap[rail].length >= (cfg.transfer ? 2 : 1)) {
        if (cfg.transfer) {
          await testExistingTransferRail(factory, Token, rail, cfg, existingMap, MINT_AMT, XFER_AMT);
        } else {
          await testExistingBasicRail(factory, Token, rail, cfg, existingMap, MINT_AMT);
        }
      } else {
        if (cfg.transfer) {
          await testTransferRail(factory, Token, rail, cfg, runTag, MINT_AMT, XFER_AMT);
        } else {
          await testBasicRail(factory, Token, rail, cfg, runTag, MINT_AMT);
        }
      }
    } catch (e) {
      failures++;
      console.log(`Rail ${rail} failed:`, e.message || e);
    }
  }

  try {
    const all = await factory.getAllWallets();
    console.log("\nSEGREGATED ACCOUNTS");
    for (const r of all) {
      console.log(`${r.rail},${r.id},${r.wallet}`);
    }
  } catch (e) {
    console.log("getAllWallets failed:", e.message || e);
  }

  console.log("\nDone, failures:", failures);
}
```

* To “reuse existing wallets only” for VISA/AMEX/CITIBIKE, set:

```js
CONFIG.RAILS = ["VISA","AMEX","CITIBIKE"];
CONFIG.WALLET_MODE = "existing";
CONFIG.DEPLOY_FACTORY = false;
```

* Then run as usual:

```bash
npx hardhat run scripts/run-reed.js --network arbitrum_sepolia
```

</details>

<details>

<summary>wallet selection logic</summary>

* `buildWalletIndex(factory)`
  * Calls `factory.getAllWallets()` → gets full list of tuples `[rail, id, wallet]`.
  * Uppercases `rail` and pushes `{ id, wallet }` into `index[rail]` **in the same order** as returned.
  * Result:
    * `index["VISA"] = [ {id1,w1}, {id2,w2}, {id3,w3}, {id4,w4}, ... ]`
    * Same for `AMEX`, `CITIBIKE`, etc.
* In your example, `index["VISA"]` will be:
  * 0: `RAIL_VISA_...e1b5d_..._1` → `0x8280…be89`
  * 1: `RAIL_VISA_...e1b5d_..._2` → `0x5623…08Ae`
  * 2: `RAIL_VISA_...fb274_..._1` → `0x3FB9…6765`
  * 3: `RAIL_VISA_...fb274_..._2` → `0x4596…8424`
  * 4: `RAIL_VISA_...b492fe_..._1` → `0xB672…dcb1`
  * 5: `RAIL_VISA_...b492fe_..._2` → `0x9a17…8FE5`
* `testExistingTransferRail` logic
  * Takes `list = existingMap[railCode]`.
  * If `list.length < 2` → skip.
  * Else picks **first two**:
    * `idA = list[0].id`, `walletA = list[0].wallet`.
    * `idB = list[1].id`, `walletB = list[1].wallet`.
  * Runs mint → transfer → burn on those two IDs only.
  * So for VISA it will always use the **oldest pair** (index 0 and 1).
* `testExistingBasicRail` logic
  * Uses `list[0]` only (oldest wallet on that rail).
* Mode selection in `main`
  * `walletMode = CONFIG.WALLET_MODE || "new"`.
  * If `"existing"`:
    * Build `existingMap` once.
    * For transfer rails → call `testExistingTransferRail`.
    * For basic rails → call `testExistingBasicRail`.
  * If `"new"`:
    * Use synthetic IDs from `makeId` and deploy new wallets.
  * If `"auto"`:
    * If there are enough existing wallets for that rail, use existing flow.
    * Otherwise fall back to new/deploy flow.
* Your current run with `WALLET_MODE: "existing"` and `RAILS: ["VISA","AMEX","CITIBIKE"]`
  * VISA: uses first 2 VISA tuples (the first runTag pair).
  * AMEX: uses first 2 AMEX tuples.
  * CITIBIKE: uses first 2 CITIBIKE tuples.
* If you ever want “latest pair instead of oldest pair”
  * Change selection from `list[0], list[1]` to `list[list.length-2], list[list.length-1]` (not done now, just how you’d flip it).

</details>

<details>

<summary>export functions</summary>

</details>

SOFTWARE SEQUENCE

1. Attach to existing factory or deploy new factory
2. Verify token matches factory token
3. Grant factory minter and burner roles if missing
4. Generate unique synthetic rail IDs
5. For each selected rail: deploy wallet → mint → transfer (if supported) → burn
6. Read and print all wallets
7. Report failures

USER FLOW SEQUENCE

1. Set TOKEN, FACTORY, DEPLOY\_FACTORY, RAILS in CONFIG
2. Choose new deploy or existing factory by toggling DEPLOY\_FACTORY
3. Run `npx hardhat run scripts/run-reed.js --network arbitrum_sepolia`
4. Watch rail-by-rail execution logs
5. Review final wallet list and failure count

FLOW OF FUNDS

COUNTERPARTIES\
Cardholder\
Merchant\
REEDUSD\
Visa\
XFTRoutingFactoryV6\
RoutingWallet A\
RoutingWallet B

TRANSFER RAIL (e.g., VISA)

1. Factory deploys wallet A for Cardholder ID
2. Factory deploys wallet B for Merchant ID
3. Factory mints REEDUSD to wallet A
4. Factory transfers REEDUSD from wallet A to wallet B
5. Factory burns remaining balance from wallet A
6. Factory burns received balance from wallet B

BASIC RAIL (non-transfer)

1. Factory deploys wallet for rail ID
2. Factory mints REEDUSD to wallet
3. Factory burns full balance from wallet

factory

{% code expandable="true" %}

```js
// npx hardhat run scripts/run-reed.js --network arbitrum_sepolia

const hre = require("hardhat");
const crypto = require("crypto");

const CONFIG = {
  TOKEN: "0x86449a994fED1c90f5DdCB3cc5bd4fD236aE4B0f",
  FACTORY: "0x562638D7a31791C5484F6DDd93F175a6f83D3FA0",
  DEPLOY_FACTORY: false,
  VERIFY_FACTORY: false,
  RAILS: ["VISA","AMEX","CITIBIKE"], // null for autodiscover or ["VISA","AMEX","CITIBIKE"];
  MINT: "10",
  XFER: "3"
};

const RAIL_CONFIG = {
  ROUTING: { method: "Routing", transfer: false },
  IBAN: { method: "IBAN", transfer: false },
  SWIFT: { method: "SWIFT", transfer: false },
  CIK: { method: "CIK", transfer: false },
  LEI: { method: "LEI", transfer: false },
  FEDNOW: { method: "FEDNOW", transfer: false },
  FEDWIRE: { method: "FEDWIRE", transfer: false },
  CHIPS: { method: "CHIPS", transfer: false },
  VISA: { method: "VISA", transfer: true },
  SUNPASS: { method: "SUNPASS", transfer: true },
  ACTCARD: { method: "ACTCARD", transfer: true },
  NCQUICKPASS: { method: "NCQUICKPASS", transfer: true },
  PAEZPASS: { method: "PAEZPASS", transfer: true },
  NJMYTRANSIT: { method: "NJMYTRANSIT", transfer: true },
  AMEX: { method: "AMEX", transfer: true },
  CITIBIKE: { method: "CITIBIKE", transfer: true }
};

function makeRunTag(chainId, factoryAddr) {
  const ts = Date.now().toString(16);
  const rand = crypto.randomBytes(4).toString("hex");
  return `${chainId.toString()}_${factoryAddr.slice(2, 8)}_${ts}_${rand}`;
}

function makeId(railCode, runTag, idx) {
  return `RAIL_${railCode}_${runTag}_${idx}`;
}

async function ensureRoles(Token, factoryAddr) {
  if (!Token.grantRole || !Token.hasRole) return;
  const keccak256 = hre.ethers.utils.keccak256;
  const toUtf8Bytes = hre.ethers.utils.toUtf8Bytes;
  const MINTER_ROLE = keccak256(toUtf8Bytes("MINTER_ROLE"));
  const BURNER_ROLE = keccak256(toUtf8Bytes("BURNER_ROLE"));
  try {
    const hasMinter = await Token.hasRole(MINTER_ROLE, factoryAddr);
    if (!hasMinter) {
      const tx = await Token.grantRole(MINTER_ROLE, factoryAddr);
      await tx.wait();
      console.log("MINTER_ROLE granted");
    } else {
      console.log("MINTER_ROLE already granted");
    }
  } catch (e) {
    console.log("MINTER_ROLE grant failed:", e.message || e);
  }
  try {
    const hasBurner = await Token.hasRole(BURNER_ROLE, factoryAddr);
    if (!hasBurner) {
      const tx = await Token.grantRole(BURNER_ROLE, factoryAddr);
      await tx.wait();
      console.log("BURNER_ROLE granted");
    } else {
      console.log("BURNER_ROLE already granted");
    }
  } catch (e) {
    console.log("BURNER_ROLE grant skipped/failed:", e.message || e);
  }
}

async function testBasicRail(factory, Token, railCode, railCfg, runTag, MINT_AMT) {
  const name = railCfg.method;
  const id = makeId(railCode, runTag, 0);
  console.log(`\nBASIC ${railCode} id=${id}`);
  const predictFn = factory[`predict${name}`];
  const deployFn = factory[`deploy${name}Wallet`];
  const getFn = factory[`get${name}Wallet`];
  const mintFn = factory[`mintTo${name}`];
  const burnFn = factory[`burnFrom${name}`];
  if (!predictFn || !deployFn || !getFn || !mintFn || !burnFn) {
    console.log(`Missing methods for ${railCode}, skipping`);
    return;
  }
  const predicted = await predictFn(id);
  console.log("predicted", predicted);
  const deployTx = await deployFn(id);
  await deployTx.wait();
  const wallet = await getFn(id);
  console.log("wallet", wallet);
  const mintTx = await mintFn(id, MINT_AMT);
  await mintTx.wait();
  const balAfterMint = await Token.balanceOf(wallet);
  console.log("bal mint", hre.ethers.utils.formatUnits(balAfterMint, 18));
  const burnTx = await burnFn(id, MINT_AMT);
  await burnTx.wait();
  const balAfterBurn = await Token.balanceOf(wallet);
  console.log("bal burn", hre.ethers.utils.formatUnits(balAfterBurn, 18));
}

async function testTransferRail(factory, Token, railCode, railCfg, runTag, MINT_AMT, XFER_AMT) {
  const name = railCfg.method;
  const idA = makeId(railCode, runTag, 1);
  const idB = makeId(railCode, runTag, 2);
  console.log(`\nTRANSFER ${railCode} A=${idA} B=${idB}`);
  const predictFn = factory[`predict${name}`];
  const deployFn = factory[`deploy${name}Wallet`];
  const getFn = factory[`get${name}Wallet`];
  const mintFn = factory[`mintTo${name}`];
  const burnFn = factory[`burnFrom${name}`];
  const transferFn = factory[`transfer${name}`];
  if (!predictFn || !deployFn || !getFn || !mintFn || !burnFn || !transferFn) {
    console.log(`Missing methods for ${railCode}, falling back to basic`);
    await testBasicRail(factory, Token, railCode, railCfg, runTag, MINT_AMT);
    return;
  }
  const predictedA = await predictFn(idA);
  const txA = await deployFn(idA);
  await txA.wait();
  const walletA = await getFn(idA);
  const predictedB = await predictFn(idB);
  const txB = await deployFn(idB);
  await txB.wait();
  const walletB = await getFn(idB);
  console.log("predictedA", predictedA);
  console.log("walletA", walletA);
  console.log("predictedB", predictedB);
  console.log("walletB", walletB);
  const mintTx = await mintFn(idA, MINT_AMT);
  await mintTx.wait();
  const balA1 = await Token.balanceOf(walletA);
  const balB1 = await Token.balanceOf(walletB);
  console.log("A bal mint", hre.ethers.utils.formatUnits(balA1, 18));
  console.log("B bal mint", hre.ethers.utils.formatUnits(balB1, 18));
  const xferTx = await transferFn(idA, idB, XFER_AMT);
  await xferTx.wait();
  const balA2 = await Token.balanceOf(walletA);
  const balB2 = await Token.balanceOf(walletB);
  console.log("A bal xfer", hre.ethers.utils.formatUnits(balA2, 18));
  console.log("B bal xfer", hre.ethers.utils.formatUnits(balB2, 18));
  const burnA = MINT_AMT.sub(XFER_AMT);
  const burnB = XFER_AMT;
  const burnTxA = await burnFn(idA, burnA);
  await burnTxA.wait();
  const burnTxB = await burnFn(idB, burnB);
  await burnTxB.wait();
  const balA3 = await Token.balanceOf(walletA);
  const balB3 = await Token.balanceOf(walletB);
  console.log("A bal burn", hre.ethers.utils.formatUnits(balA3, 18));
  console.log("B bal burn", hre.ethers.utils.formatUnits(balB3, 18));
}

async function main() {
  const [deployer] = await hre.ethers.getSigners();
  console.log("Deployer", deployer.address);
  let factory;
  let tokenAddr = CONFIG.TOKEN;
  if (!CONFIG.DEPLOY_FACTORY && CONFIG.FACTORY && CONFIG.FACTORY !== "0x0000000000000000000000000000000000000000") {
    factory = await hre.ethers.getContractAt("contracts/XFTRoutingFactoryV6.sol:XFTRoutingFactoryV6", CONFIG.FACTORY);
    console.log("Using existing factory", factory.address);
    const onChainToken = await factory.token();
    if (tokenAddr && tokenAddr.toLowerCase() !== onChainToken.toLowerCase()) {
      throw new Error(`TOKEN mismatch: config=${tokenAddr} onchain=${onChainToken}`);
    }
    tokenAddr = onChainToken;
  } else {
    if (!tokenAddr) throw new Error("CONFIG.TOKEN required when deploying factory");
    const Factory = await hre.ethers.getContractFactory("contracts/XFTRoutingFactoryV6.sol:XFTRoutingFactoryV6");
    factory = await Factory.deploy(tokenAddr);
    await factory.deployed();
    console.log("Deployed factory", factory.address);
    if (CONFIG.VERIFY_FACTORY) {
      try {
        await factory.deployTransaction.wait(5);
        await hre.run("verify:verify", {
          address: factory.address,
          constructorArguments: [tokenAddr],
          contract: "contracts/XFTRoutingFactoryV6.sol:XFTRoutingFactoryV6"
        });
        console.log("Verified factory");
      } catch (e) {
        console.log("Verify failed:", e.message || e);
      }
    }
  }
  const Token = await hre.ethers.getContractAt("contracts/USDX.sol:USDX", tokenAddr);
  console.log("Token", tokenAddr);
  await ensureRoles(Token, factory.address);
  const network = await hre.ethers.provider.getNetwork();
  const chainId = network.chainId;
  const runTag = makeRunTag(chainId, factory.address);
  console.log("RunTag", runTag, "mode smoke");
  let rails = [];
  try {
    rails = await factory.getAllRails();
  } catch (e) {
    console.log("getAllRails failed, using config keys:", e.message || e);
    rails = Object.keys(RAIL_CONFIG);
  }
  let selectedRails = rails.map(r => r.toUpperCase()).filter(r => RAIL_CONFIG[r]);
  if (Array.isArray(CONFIG.RAILS) && CONFIG.RAILS.length > 0) {
    const set = new Set(CONFIG.RAILS.map(r => r.toUpperCase()));
    selectedRails = selectedRails.filter(r => set.has(r));
  }
  console.log("Rails", selectedRails.join(", "));
  const MINT_AMT = hre.ethers.utils.parseUnits(CONFIG.MINT, 18);
  const XFER_AMT = hre.ethers.utils.parseUnits(CONFIG.XFER, 18);
  let failures = 0;
  for (const rail of selectedRails) {
    const cfg = RAIL_CONFIG[rail];
    try {
      if (cfg.transfer) {
        await testTransferRail(factory, Token, rail, cfg, runTag, MINT_AMT, XFER_AMT);
      } else {
        await testBasicRail(factory, Token, rail, cfg, runTag, MINT_AMT);
      }
    } catch (e) {
      failures++;
      console.log(`Rail ${rail} failed:`, e.message || e);
    }
  }
  try {
    const all = await factory.getAllWallets();
    console.log("\nSEGREGATED ACCOUNTS");
    for (const r of all) {
      console.log(`${r.rail},${r.id},${r.wallet}`);
    }
  } catch (e) {
    console.log("getAllWallets failed:", e.message || e);
  }
  console.log("\nDone, failures:", failures);
}

main().catch(e => {
  console.error(e);
  process.exit(1);
});

```

{% endcode %}

wallet

{% code expandable="true" %}

```javascript
// npx hardhat run scripts/run-reed.js --network arbitrum_sepolia

const hre = require("hardhat");
const crypto = require("crypto");

const CONFIG = {
  TOKEN: "0x86449a994fED1c90f5DdCB3cc5bd4fD236aE4B0f",
  FACTORY: "0x562638D7a31791C5484F6DDd93F175a6f83D3FA0",
  DEPLOY_FACTORY: false,
  VERIFY_FACTORY: false,
  RAILS: ["VISA","AMEX","CITIBIKE"], // null for autodiscover or ["VISA","AMEX","CITIBIKE"];
  MINT: "10",
  XFER: "3",
  WALLET_MODE: "existing"// new = deploy, existing = no deploy
};

const RAIL_CONFIG = {
  ROUTING: { method: "Routing", transfer: false },
  IBAN: { method: "IBAN", transfer: false },
  SWIFT: { method: "SWIFT", transfer: false },
  CIK: { method: "CIK", transfer: false },
  LEI: { method: "LEI", transfer: false },
  FEDNOW: { method: "FEDNOW", transfer: false },
  FEDWIRE: { method: "FEDWIRE", transfer: false },
  CHIPS: { method: "CHIPS", transfer: false },
  VISA: { method: "VISA", transfer: true },
  SUNPASS: { method: "SUNPASS", transfer: true },
  ACTCARD: { method: "ACTCARD", transfer: true },
  NCQUICKPASS: { method: "NCQUICKPASS", transfer: true },
  PAEZPASS: { method: "PAEZPASS", transfer: true },
  NJMYTRANSIT: { method: "NJMYTRANSIT", transfer: true },
  AMEX: { method: "AMEX", transfer: true },
  CITIBIKE: { method: "CITIBIKE", transfer: true }
};

function makeRunTag(chainId, factoryAddr) {
  const ts = Date.now().toString(16);
  const rand = crypto.randomBytes(4).toString("hex");
  return `${chainId.toString()}_${factoryAddr.slice(2, 8)}_${ts}_${rand}`;
}

function makeId(railCode, runTag, idx) {
  return `RAIL_${railCode}_${runTag}_${idx}`;
}

async function ensureRoles(Token, factoryAddr) {
  if (!Token.grantRole || !Token.hasRole) return;
  const keccak256 = hre.ethers.utils.keccak256;
  const toUtf8Bytes = hre.ethers.utils.toUtf8Bytes;
  const MINTER_ROLE = keccak256(toUtf8Bytes("MINTER_ROLE"));
  const BURNER_ROLE = keccak256(toUtf8Bytes("BURNER_ROLE"));
  try {
    const hasMinter = await Token.hasRole(MINTER_ROLE, factoryAddr);
    if (!hasMinter) {
      const tx = await Token.grantRole(MINTER_ROLE, factoryAddr);
      await tx.wait();
      console.log("MINTER_ROLE granted");
    } else {
      console.log("MINTER_ROLE already granted");
    }
  } catch (e) {
    console.log("MINTER_ROLE grant failed:", e.message || e);
  }
  try {
    const hasBurner = await Token.hasRole(BURNER_ROLE, factoryAddr);
    if (!hasBurner) {
      const tx = await Token.grantRole(BURNER_ROLE, factoryAddr);
      await tx.wait();
      console.log("BURNER_ROLE granted");
    } else {
      console.log("BURNER_ROLE already granted");
    }
  } catch (e) {
    console.log("BURNER_ROLE grant skipped/failed:", e.message || e);
  }
}


async function buildWalletIndex(factory) {
  const index = {};
  const all = await factory.getAllWallets();
  for (const r of all) {
    const rail = r.rail.toUpperCase();
    if (!index[rail]) index[rail] = [];
    index[rail].push({ id: r.id, wallet: r.wallet });
  }
  return index;
}




async function testBasicRail(factory, Token, railCode, railCfg, runTag, MINT_AMT) {
  const name = railCfg.method;
  const id = makeId(railCode, runTag, 0);
  console.log(`\nBASIC ${railCode} id=${id}`);
  const predictFn = factory[`predict${name}`];
  const deployFn = factory[`deploy${name}Wallet`];
  const getFn = factory[`get${name}Wallet`];
  const mintFn = factory[`mintTo${name}`];
  const burnFn = factory[`burnFrom${name}`];
  if (!predictFn || !deployFn || !getFn || !mintFn || !burnFn) {
    console.log(`Missing methods for ${railCode}, skipping`);
    return;
  }
  const predicted = await predictFn(id);
  console.log("predicted", predicted);
  const deployTx = await deployFn(id);
  await deployTx.wait();
  const wallet = await getFn(id);
  console.log("wallet", wallet);
  const mintTx = await mintFn(id, MINT_AMT);
  await mintTx.wait();
  const balAfterMint = await Token.balanceOf(wallet);
  console.log("bal mint", hre.ethers.utils.formatUnits(balAfterMint, 18));
  const burnTx = await burnFn(id, MINT_AMT);
  await burnTx.wait();
  const balAfterBurn = await Token.balanceOf(wallet);
  console.log("bal burn", hre.ethers.utils.formatUnits(balAfterBurn, 18));
}

async function testTransferRail(factory, Token, railCode, railCfg, runTag, MINT_AMT, XFER_AMT) {
  const name = railCfg.method;
  const idA = makeId(railCode, runTag, 1);
  const idB = makeId(railCode, runTag, 2);
  console.log(`\nTRANSFER ${railCode} A=${idA} B=${idB}`);
  const predictFn = factory[`predict${name}`];
  const deployFn = factory[`deploy${name}Wallet`];
  const getFn = factory[`get${name}Wallet`];
  const mintFn = factory[`mintTo${name}`];
  const burnFn = factory[`burnFrom${name}`];
  const transferFn = factory[`transfer${name}`];
  if (!predictFn || !deployFn || !getFn || !mintFn || !burnFn || !transferFn) {
    console.log(`Missing methods for ${railCode}, falling back to basic`);
    await testBasicRail(factory, Token, railCode, railCfg, runTag, MINT_AMT);
    return;
  }
  const predictedA = await predictFn(idA);
  const txA = await deployFn(idA);
  await txA.wait();
  const walletA = await getFn(idA);
  const predictedB = await predictFn(idB);
  const txB = await deployFn(idB);
  await txB.wait();
  const walletB = await getFn(idB);
  console.log("predictedA", predictedA);
  console.log("walletA", walletA);
  console.log("predictedB", predictedB);
  console.log("walletB", walletB);
  const mintTx = await mintFn(idA, MINT_AMT);
  await mintTx.wait();
  const balA1 = await Token.balanceOf(walletA);
  const balB1 = await Token.balanceOf(walletB);
  console.log("A bal mint", hre.ethers.utils.formatUnits(balA1, 18));
  console.log("B bal mint", hre.ethers.utils.formatUnits(balB1, 18));
  const xferTx = await transferFn(idA, idB, XFER_AMT);
  await xferTx.wait();
  const balA2 = await Token.balanceOf(walletA);
  const balB2 = await Token.balanceOf(walletB);
  console.log("A bal xfer", hre.ethers.utils.formatUnits(balA2, 18));
  console.log("B bal xfer", hre.ethers.utils.formatUnits(balB2, 18));
  const burnA = MINT_AMT.sub(XFER_AMT);
  const burnB = XFER_AMT;
  const burnTxA = await burnFn(idA, burnA);
  await burnTxA.wait();
  const burnTxB = await burnFn(idB, burnB);
  await burnTxB.wait();
  const balA3 = await Token.balanceOf(walletA);
  const balB3 = await Token.balanceOf(walletB);
  console.log("A bal burn", hre.ethers.utils.formatUnits(balA3, 18));
  console.log("B bal burn", hre.ethers.utils.formatUnits(balB3, 18));
}


async function testExistingBasicRail(factory, Token, railCode, railCfg, existingMap, MINT_AMT) {
  const name = railCfg.method;
  const list = existingMap[railCode];
  if (!list || list.length === 0) {
    console.log(`No existing wallets for ${railCode}, skipping`);
    return;
  }
  const { id, wallet } = list[0];
  console.log(`\nBASIC EXISTING ${railCode} id=${id} wallet=${wallet}`);
  const mintFn = factory[`mintTo${name}`];
  const burnFn = factory[`burnFrom${name}`];
  if (!mintFn || !burnFn) {
    console.log(`Missing methods for ${railCode}, skipping`);
    return;
  }
  const mintTx = await mintFn(id, MINT_AMT);
  await mintTx.wait();
  const balAfterMint = await Token.balanceOf(wallet);
  console.log("bal mint", hre.ethers.utils.formatUnits(balAfterMint, 18));
  const burnTx = await burnFn(id, MINT_AMT);
  await burnTx.wait();
  const balAfterBurn = await Token.balanceOf(wallet);
  console.log("bal burn", hre.ethers.utils.formatUnits(balAfterBurn, 18));
}



async function testExistingTransferRail(factory, Token, railCode, railCfg, existingMap, MINT_AMT, XFER_AMT) {
  const name = railCfg.method;
  const list = existingMap[railCode];
  if (!list || list.length < 2) {
    console.log(`Need at least 2 existing wallets for ${railCode}, skipping`);
    return;
  }
  const { id: idA, wallet: walletA } = list[0];
  const { id: idB, wallet: walletB } = list[1];
  console.log(`\nTRANSFER EXISTING ${railCode} A=${idA} B=${idB}`);
  const mintFn = factory[`mintTo${name}`];
  const burnFn = factory[`burnFrom${name}`];
  const transferFn = factory[`transfer${name}`];
  if (!mintFn || !burnFn || !transferFn) {
    console.log(`Missing methods for ${railCode}, skipping existing flow`);
    return;
  }
  const mintTx = await mintFn(idA, MINT_AMT);
  await mintTx.wait();
  const balA1 = await Token.balanceOf(walletA);
  const balB1 = await Token.balanceOf(walletB);
  console.log("A bal mint", hre.ethers.utils.formatUnits(balA1, 18));
  console.log("B bal mint", hre.ethers.utils.formatUnits(balB1, 18));
  const xferTx = await transferFn(idA, idB, XFER_AMT);
  await xferTx.wait();
  const balA2 = await Token.balanceOf(walletA);
  const balB2 = await Token.balanceOf(walletB);
  console.log("A bal xfer", hre.ethers.utils.formatUnits(balA2, 18));
  console.log("B bal xfer", hre.ethers.utils.formatUnits(balB2, 18));
  const burnA = MINT_AMT.sub(XFER_AMT);
  const burnB = XFER_AMT;
  const burnTxA = await burnFn(idA, burnA);
  await burnTxA.wait();
  const burnTxB = await burnFn(idB, burnB);
  await burnTxB.wait();
  const balA3 = await Token.balanceOf(walletA);
  const balB3 = await Token.balanceOf(walletB);
  console.log("A bal burn", hre.ethers.utils.formatUnits(balA3, 18));
  console.log("B bal burn", hre.ethers.utils.formatUnits(balB3, 18));
}






async function main() {
  const [deployer] = await hre.ethers.getSigners();
  console.log("Deployer", deployer.address);
  let factory;
  let tokenAddr = CONFIG.TOKEN;

  if (!CONFIG.DEPLOY_FACTORY && CONFIG.FACTORY && CONFIG.FACTORY !== "0x0000000000000000000000000000000000000000") {
    factory = await hre.ethers.getContractAt("contracts/XFTRoutingFactoryV6.sol:XFTRoutingFactoryV6", CONFIG.FACTORY);
    console.log("Using existing factory", factory.address);
    const onChainToken = await factory.token();
    if (tokenAddr && tokenAddr.toLowerCase() !== onChainToken.toLowerCase()) {
      throw new Error(`TOKEN mismatch: config=${tokenAddr} onchain=${onChainToken}`);
    }
    tokenAddr = onChainToken;
  } else {
    if (!tokenAddr) throw new Error("CONFIG.TOKEN required when deploying factory");
    const Factory = await hre.ethers.getContractFactory("contracts/XFTRoutingFactoryV6.sol:XFTRoutingFactoryV6");
    factory = await Factory.deploy(tokenAddr);
    await factory.deployed();
    console.log("Deployed factory", factory.address);
    if (CONFIG.VERIFY_FACTORY) {
      try {
        await factory.deployTransaction.wait(5);
        await hre.run("verify:verify", {
          address: factory.address,
          constructorArguments: [tokenAddr],
          contract: "contracts/XFTRoutingFactoryV6.sol:XFTRoutingFactoryV6"
        });
        console.log("Verified factory");
      } catch (e) {
        console.log("Verify failed:", e.message || e);
      }
    }
  }

  const Token = await hre.ethers.getContractAt("contracts/USDX.sol:USDX", tokenAddr);
  console.log("Token", tokenAddr);
  await ensureRoles(Token, factory.address);

  const network = await hre.ethers.provider.getNetwork();
  const chainId = network.chainId;
  const runTag = makeRunTag(chainId, factory.address);
  console.log("RunTag", runTag, "mode smoke");

  let rails = [];
  try {
    rails = await factory.getAllRails();
  } catch (e) {
    console.log("getAllRails failed, using config keys:", e.message || e);
    rails = Object.keys(RAIL_CONFIG);
  }

  let selectedRails = rails.map(r => r.toUpperCase()).filter(r => RAIL_CONFIG[r]);
  if (Array.isArray(CONFIG.RAILS) && CONFIG.RAILS.length > 0) {
    const set = new Set(CONFIG.RAILS.map(r => r.toUpperCase()));
    selectedRails = selectedRails.filter(r => set.has(r));
  }
  console.log("Rails", selectedRails.join(", "));

  const MINT_AMT = hre.ethers.utils.parseUnits(CONFIG.MINT, 18);
  const XFER_AMT = hre.ethers.utils.parseUnits(CONFIG.XFER, 18);

  const walletMode = CONFIG.WALLET_MODE || "new";
  let existingMap = null;
  if (walletMode !== "new") {
    existingMap = await buildWalletIndex(factory);
  }

  let failures = 0;

  for (const rail of selectedRails) {
    const cfg = RAIL_CONFIG[rail];
    try {
      if (walletMode === "existing") {
        if (cfg.transfer) {
          await testExistingTransferRail(factory, Token, rail, cfg, existingMap, MINT_AMT, XFER_AMT);
        } else {
          await testExistingBasicRail(factory, Token, rail, cfg, existingMap, MINT_AMT);
        }
      } else if (walletMode === "auto" && existingMap && existingMap[rail] && existingMap[rail].length >= (cfg.transfer ? 2 : 1)) {
        if (cfg.transfer) {
          await testExistingTransferRail(factory, Token, rail, cfg, existingMap, MINT_AMT, XFER_AMT);
        } else {
          await testExistingBasicRail(factory, Token, rail, cfg, existingMap, MINT_AMT);
        }
      } else {
        if (cfg.transfer) {
          await testTransferRail(factory, Token, rail, cfg, runTag, MINT_AMT, XFER_AMT);
        } else {
          await testBasicRail(factory, Token, rail, cfg, runTag, MINT_AMT);
        }
      }
    } catch (e) {
      failures++;
      console.log(`Rail ${rail} failed:`, e.message || e);
    }
  }

  try {
    const all = await factory.getAllWallets();
    console.log("\nSEGREGATED ACCOUNTS");
    for (const r of all) {
      console.log(`${r.rail},${r.id},${r.wallet}`);
    }
  } catch (e) {
    console.log("getAllWallets failed:", e.message || e);
  }

  console.log("\nDone, failures:", failures);
}


main().catch(e => {
  console.error(e);
  process.exit(1);
});

```

{% endcode %}

SOFTWARE SEQUENCE

* Attach to existing factory or deploy new factory
* Verify token matches factory token
* Grant factory minter and burner roles if missing
* Generate unique synthetic rail IDs (new-wallet mode)
* For each selected rail: deploy wallet → mint → transfer (if supported) → burn (new-wallet mode)
* Read and print all wallets
* Report failures

NEW: EXISTING-WALLET MODE SEQUENCE

* Build in-memory index from `getAllWallets()` grouped by rail → `index[rail] = [{id,wallet},…]`
* For transfer rails, pick first two IDs per rail from `index[rail]` → `idA`, `idB`
* For basic rails, pick first ID per rail from `index[rail]` → `id`
* Call `mintTo<RAIL>(idA)` (or `id`) on factory
* Call `transfer<RAIL>(idA,idB)` for transfer rails
* Call `burnFrom<RAIL>(idA, MINT−XFER)` and `burnFrom<RAIL>(idB, XFER)` (or full burn for basic)
* Print balances and continue to next rail without any deploy calls

USER FLOW SEQUENCE

* Set `TOKEN`, `FACTORY`, `DEPLOY_FACTORY`, `RAILS` in CONFIG
* Choose new deploy or existing factory by toggling `DEPLOY_FACTORY`
* Run `npx hardhat run scripts/run-reed.js --network arbitrum_sepolia`
* Watch rail-by-rail execution logs
* Review final wallet list and failure count

NEW: USER FLOW FOR EXISTING WALLETS

* Leave `FACTORY` set to existing XFTRoutingFactoryV6 address
* Set `WALLET_MODE = "existing"`
* Set `RAILS = ["VISA","AMEX","CITIBIKE"]` (or any subset you want to reuse)
* Run the same Hardhat command
* Script reuses oldest wallet pairs per rail from `getAllWallets()` (no new wallets deployed)

FLOW OF FUNDS

COUNTERPARTIES

* Cardholder
* Merchant
* REEDUSD
* Visa / Amex / Citibike rail
* XFTRoutingFactoryV6
* RoutingWallet A
* RoutingWallet B

TRANSFER RAIL (NEW WALLETS, e.g., VISA)

* Factory deploys wallet A for Cardholder ID
* Factory deploys wallet B for Merchant ID
* Factory mints REEDUSD to wallet A
* Factory transfers REEDUSD from wallet A to wallet B
* Factory burns remaining balance from wallet A
* Factory burns received balance from wallet B

BASIC RAIL (NEW WALLET, non-transfer)

* Factory deploys wallet for rail ID
* Factory mints REEDUSD to wallet
* Factory burns full balance from wallet

EXISTING-WALLET TRANSFER RAIL

* Factory looks up existing wallet A and B from prior IDs on that rail
* Factory mints REEDUSD to wallet A using existing ID
* Factory transfers REEDUSD from wallet A to wallet B
* Factory burns remaining balance from wallet A
* Factory burns received balance from wallet B

EXISTING-WALLET BASIC RAIL

* Factory looks up existing wallet for that rail ID
* Factory mints REEDUSD to existing wallet
* Factory burns full balance from that wallet


# script/run-rowe.js

Multicall3 0xcA11bde05977b3631167028862bE2a173976CA11

script/run-rowe.js

create wallets on rails given # in CONFIG

mint tokens to wallets given payroll amt in CONFIG

wallet deploy/no deploy logic for additional payroll distributions to existing wallets

```
1. run rail flows on existing wallets (no deploy)
2. run rail flows on new wallets (deploy)

NO DEPLOY
1. pull existing wallets given rail
2. run normal test basic/transfer flows on those addresses
```


# Netting

<mark style="color:red;">multilateral = network</mark>\ <mark style="color:red;">bilateral = between counterparties</mark>

**Q: What is netting?**\
A: A way of consolidating or reconciling multiple payments between two or more parties to create a single amount due to each participant. It simplifies doing [business](https://www.ibm.com/topics/blockchain-for-business) and reduces risk.

Netting refers to the consolidation of multiple financial obligations or payments into a single net amount. By strategically offsetting positive and negative positions, netting reduces the total number and value of payments involved as well as their associated settlement risks.

**Example:** Party A is due to receive USD 75,000 from Party B. At the same time, Party B is due to receive USD 30,000 from Party A. Instead of Party B paying USD 75,000 to Party A and Party A paying USD 30,000 to Party B in two separate transactions (called gross settlement), the payments can be netted. That way Party A owes nothing, and Party B pays Party A USD 45,000.

**Q: Why blockchain for netting?**\
A: The primary benefit for the banks is reducing the cost of cash logistics.

* Lower costs for all parties
* Reduce manual data entry and file uploads
* Automate and speed processing of matching and netting transactions
* Increase security through encryption and tamper-evident distributed ledger technology
* Provide transparency and enhance trust with permissioned access to transaction data

Problem:

It is not uncommon for banks to find themselves flush with cash in one city and low on cash needed to fill ATM machines in another city. Physically moving cash from one city to another is expensive, requiring armored car transport, possibly air transport, and insurance, among other costs. Another option is to ask the central bank to absorb the excess money in one city and provide cash in the other city, but this is also a costly alternative.

### IDN Liquidity Algorithm

At start of each day, participants send $$$ to a central funding account. This $$$ pool allows XFT to settle faster, larger payments via multilateral netting.

* <mark style="color:purple;">Multilateral netting:</mark> Offsets obligations across the entire network
* <mark style="color:purple;">Bilateral netting:</mark> Offsets payment obligations between two banks

Bilateral netting: If your bank owes another bank $100 million, and that bank owes your bank $80 million, XFT nets these so only $20 million needs to move.

<mark style="color:purple;">LIQUIDITY MECHANISM FLOW OF FUNDS</mark>

1. Bank funds IDN wallet
2. Bank adds optional supplemental
3. Bank A pays Bank B
4. XFT debits A credits B
5. Uses supplemental then primary
6. Queues if limits hit
7. End of day net and settle​

Liquidity saving mechanisms

* Offsetting algorithm
* Time-varying tariff
* Payment splitting

<details>

<summary>Why liquidity saving mechanisms when IDN = instant + zero counterparty risk?</summary>

Bank balance sheet + large-value payments still require prefunding/cash on hand. Accelerate working capital flows for RDFI leg.

</details>

<figure><img src="/files/Ji6ItVitaY4zk5BOeNnP" alt=""><figcaption></figcaption></figure>

***

RESOURCES

[GUIDELINES FOR FOREIGN EXCHANGE SETTLEMENT NETTING](https://www.newyorkfed.org/medialibrary/microsites/fxc/files/guidefx.pdf)

[What is Netting? How Does Netting Work?](https://www.newyorkfed.org/medialibrary/microsites/fmlg/files/Millerspresentationonnetting.pdf)

[Payment Systems, Comptroller's Handbook](https://www.occ.gov/publications-and-resources/publications/comptrollers-handbook/files/payment-sys-funds-transfer-activities/pub-ch-payment-systems.pdf)

[Wholesale Payment Systems, FFIEC’s Handbook](https://ithandbook.ffiec.gov/it-booklets/wholesale-payment-systems/introduction/)

[Automated Clearing House, NCUA Examiner’s Guide](https://publishedguides.ncua.gov/examiner/Content/ExaminersGuide/ElectronicPaymentSystems/EPSTypes/ACH/ACH_Overview.htm)

[About ACH Payments, PayPal](https://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/about_ach_payments.htm)

[System and method for intraday netting payment finality with supplemental funding](https://xft.finance/downloads/US8725609B2.pdf)

[FedNow and Faster Payments in US](https://xft.finance/downloads/fednow_bostonfed_20241108.pdf)

[Liquidity saving in real-time gross&#x20;settlement systems](http://xft.sh/boe-rtgs-liquidity)


# Payments

<mark style="color:purple;">IDN FLOWS</mark>

stablecoin→USD→Fed rails→USD→stablecoin\
stablecoin → FEDX → stablecoin\
tokenized deposit1 → FEDX → tokenized deposit2\
tokenized deposit1 → tokenized deposit1

***

<mark style="color:purple;">PARTIES</mark>

Federal Reserve\
Western Union\
SWIFT\
The Clearing House\
NACHA\
[Payments Canada](https://www.payments.ca/)\
Early Warning Services\
National Securities Clearing Corporation (NSCC)

<mark style="color:purple;">METHODS</mark>

Standard ACH\
Same Day ACH\
Wire transfer\
RTP\
RfP\
Credit cards\
Fedwire\
FedNow\
Zelle

Securities

ACATS\
ATON\
DRS\
DWAC\
FOP\
PEA

<mark style="color:purple;">NETWORKS / RAILS</mark>

ACH\
CHIPS\
Image Exchange\
RTP\
SPEI\
BACS

<mark style="color:purple;">IDENTIFIERS</mark>

RTN\
IBAN\
LEI\
BIC/SWIFT\
UID\
CLABE\
DTC\
TAN\
CUSIP\
ISIN\
SEDOL\
[OCC Option Symbol](https://en.wikipedia.org/wiki/Option_symbol#The_OCC_Option_Symbol)\
FIGI

<mark style="color:purple;">**STANDARDS**</mark>

* [ISO 9362](https://en.wikipedia.org/wiki/ISO_9362)
* ISO 20022
* ISO 13616
* ISO 4217
* ISO 8601
* ISO 3166
* ISO 17442 Legal Entity Identifier (LEI)
* ISO 10383 Market Identifier Code (MIC)
* ISO 13616 International Bank Account Number (IBAN)
* ISO 9362 Business Identifier Code (BIC)
* [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122)
* [RFC 3696](https://datatracker.ietf.org/doc/html/rfc3696)
* RFC 3339

<mark style="color:purple;">RESOURCES</mark>

<https://www.theclearinghouse.org/-/media/New/TCH/Documents/Payment-Systems/RTN-Docs/RT-File-2025-05.txt>\
<https://www.theclearinghouse.org/payment-systems/rtp/rtn>\
<https://www.theclearinghouse.org/payment-systems/rtp/RTP-Participating-Financial-Institutions>\
<https://www.theclearinghouse.org/payment-systems>\
<https://www.theclearinghouse.org/uid-lookup>\
<https://www.theclearinghouse.org/payments-services/education>\
<https://www.swiftref.com/en/bicsearch>\
<https://www.ibm.com/docs/en/ftmfz/3.2.13?topic=mappers-mapping-pain00100103-isf>\
<https://www.dtcc.com/client-center/dtc-directories>\
<https://intercom.help/helpvest/en/articles/9005527-types-of-transfers-in-a-broker-an-expanded-educational-guide>


# IDN Flows

<mark style="color:purple;">COUNTERPARTIES</mark>

ACH Operator = Federal Reserve\
FEDX = CBDC\
JPMD = tokenized bank deposit\
VISA = Visa stablecoin running on VisaNet\
Credit Unions\
ODFI\
RDFI\
XFT

<mark style="color:purple;">IDN FLOW</mark>

Originator → ODFI → XFT → RDFI → Receiver\
Originator →  XFT → RDFI → Receiver

***

<mark style="color:purple;">USER FLOW</mark>

1. Alice sends a request to Bank A “Pay Bank B $5 for the benefit of Bob”
2. Bank A verifies Alice’s identity and adequacy of Alice’s funds
3. Bank A notifies Bank B of the payment
4. Bank B verifies Bob has an account
5. Bank B sends confirmation to Bank A
6. Both banks send confirmation to their respective customers.

<mark style="color:purple;">PUSH / SWAP / CREDIT</mark>

Originator → ODFI → ACH Operator → RDFI → Receiver\
Originator → ODFI → XFT → RDFI → Receiver\
stablecoin→USD→Fed rails→USD→stablecoin\
stablecoin → FEDX → stablecoin\
tokenized deposit1 → FEDX → tokenized deposit2\
tokenized deposit1 → tokenized deposit1\
tokenized deposit1 → VISA → tokenized deposit2\
tokenized deposit1 → VISA → USD\
ODFI → XFT → Burn ODFI + Mint RDFI

***

### <mark style="color:red;">TOKENIZED DEPOSIT PAYMENT FLOWS</mark>

*Originator -> ODFI -> XFT*

<figure><img src="/files/tY4JK9atSHeeaC4Qqhrm" alt=""><figcaption></figcaption></figure>

```
1. Originator sends Pay $5 to Receiver request to ODFI
2. ODFI verifies funds internally
3. ODFI sends Transfer $5 to RDFI request to XFT
4. XFT burns $5 from ODFI account internally
5. XFT mints $5 to RDFI account internally
6. XFT sends Notify $5 credit message to RDFI
7. RDFI verifies Receiver account internally
8. RDFI sends Confirm acceptance message to XFT
9. XFT sends Settlement complete message to ODFI
10. ODFI sends Payment sent confirmation to Originator
11. RDFI sends Payment received confirmation to Receiver
```

*Originator -> XFT*

<figure><img src="/files/6HaftogZQJPeEAcZ7xJ3" alt=""><figcaption></figcaption></figure>

```
1. Originator sends "Pay $5 to Receiver" request to XFT
2. XFT verifies tokenized deposit amounts and wallet existence
3. XFT burns $5 from ODFI wallet
4. XFT mints $5 to RDFI wallet
5. XFT sends confirmation message to Originator
6. XFT sends credit message to RDFI
```

***

<mark style="color:purple;">RESOURCES</mark>

[Visa Banks](https://usa.visa.com/dam/VCOM/regional/na/us/pay-with-visa/documents/eligible-financial-institutions.pdf)\
[Wells Fargo ACH](https://smallbusinessresources.wf.com/digitize-the-payment-process-with-ach/)\
[PNC Bank ACH](https://www.pnc.com/insights/personal-finance/spend/what-is-an-ach-payment.html)\
[Correspondent banking](https://docs.xft.finance/learn/flows/payments/correspondent-banking)


# Rewards

<figure><img src="/files/CQHG6zcOw3Xs6uAvQ2Hu" alt="Payment flows in the network"><figcaption></figcaption></figure>

<mark style="color:$success;">Interchange fee = (percentage × transaction amount) + flat fee</mark>

* **A percentage of the purchase amount,** typically between 1.5% and 3%
* **A small fixed transaction fee,** often between 5 and 20 cents

<figure><img src="/files/C3pr4AuG1LMYQoURumy6" alt="" width="563"><figcaption></figcaption></figure>

RESOURCES

<https://www.federalreserve.gov/pubs/feds/2009/200923/200923pap.pdf>

<https://www.richmondfed.org/publications/research/economic_brief/2011/eb_11-05>

<https://www.philadelphiafed.org/-/media/frbp/assets/working-papers/2025/wp25-18.pdf>

<https://www.rba.gov.au/payments-and-infrastructure/review-of-retail-payments-regulation/backgrounders/backgrounder-on-interchange-and-scheme-fees.html>

$$
\text{Interchange Fee} = (\text{percentage} \times \text{transaction amount}) + \text{flat fee}
$$

<https://www.paypal.com/us/brc/article/what-is-interchange-plus-plus>


# Legacy Rail Flows

<mark style="color:purple;">ACH TRANSFER FLOW</mark>

1. The originator (such as your employer) initiates the payment or deposit by giving instructions to their bank.
2. The bank sends digital payment files to the ACH network.
3. The ACH network passes those payment files on to the receiving bank.
   1. <mark style="color:red;">...or XFT sends payment files to recieving bank. This cuts out ACH operator step.</mark>
4. The receiving bank then adds money or takes money from the receiver’s bank account.

<mark style="color:purple;">ACH DATA FLOW</mark>

1. Originator initiates a debit or credit payment order to the ODFI
2. ODFI transmits the payment information to the ACH operator
3. ACH operator receives data from the ODFI and sorts the entries by routing number
4. ACH operator transmits the entries to the RDFI
5. RDFI receives, processes, and posts the ACH data to the receiver account on settlement day

<mark style="color:purple;">CORRESPONDENT BANKING</mark>

```
PAYMENT SETTLED VIA CORRESPONDENT BANKING
1. Debiting of payer’s account with bank A
2. Crediting of bank B’s mirror account with bank A, which is kept for accounting purposes
3. Payment message from bank A to bank B via telecommunication network
4. Debiting of bank A’s account with bank B (loro account)

A. Use correspondent bank only
5. Crediting of bank C’s account with bank B
6. Payment message from bank B to bank C via telecommunication network
7. Debiting of bank’s B mirror account with bank C, which is kept for accounting purposes
8. Crediting of receiver’s account with bank C

B. Involvement of payment system
5. Payment message from bank B to payment system
6. Settlement via payment system
7. Payment message from payment system to bank C
8. Crediting of receiver’s account with bank C
```


# Source of funds

## Source of funds - expected use (SoF-Eu) most recent occupation list

This page enumerates the valid job-codes for submitting individual SoF-Eu questionnaires via API. All codes should be passed as string values.

<table data-header-hidden><thead><tr><th width="565">Occupation</th><th>Code</th></tr></thead><tbody><tr><td>Accountant and auditor</td><td>132011</td></tr><tr><td>Actor</td><td>272011</td></tr><tr><td>Actuary</td><td>152011</td></tr><tr><td>Acupuncturist</td><td>291291</td></tr><tr><td>Adhesive bonding machine operator and tender</td><td>519191</td></tr><tr><td>Administrative services manager</td><td>113012</td></tr><tr><td>Advertising and promotions manager</td><td>112011</td></tr><tr><td>Advertising sales agent</td><td>413011</td></tr><tr><td>Aerospace engineer</td><td>172011</td></tr><tr><td>Agent and business manager of artists, performers, and athletes</td><td>131011</td></tr><tr><td>Agricultural and food science technician</td><td>194010</td></tr><tr><td>Agricultural and food scientist</td><td>191010</td></tr><tr><td>Agricultural engineer</td><td>172021</td></tr><tr><td>Agricultural inspector</td><td>452011</td></tr><tr><td>Air traffic controller and airfield operations specialist</td><td>532020</td></tr><tr><td>Aircraft mechanic and service technician</td><td>493011</td></tr><tr><td>Aircraft pilots and flight engineer</td><td>532010</td></tr><tr><td>Aircraft structure, surfaces, rigging, and systems assembler</td><td>512011</td></tr><tr><td>Ambulance driver and attendant, except emergency medical technician</td><td>533011</td></tr><tr><td>Animal breeder</td><td>452021</td></tr><tr><td>Animal caretaker</td><td>392021</td></tr><tr><td>Animal control worker</td><td>339011</td></tr><tr><td>Animal trainer</td><td>392011</td></tr><tr><td>Architect, except landscape and naval</td><td>171011</td></tr><tr><td>Architectural and civil drafter</td><td>173011</td></tr><tr><td>Architectural and engineering manager</td><td>119041</td></tr><tr><td>Archivist, curator, and museum technician</td><td>254010</td></tr><tr><td>Artist and related worker</td><td>271010</td></tr><tr><td>Astronomer and physicist</td><td>192010</td></tr><tr><td>Athletes and sports competitor</td><td>272021</td></tr><tr><td>Atmospheric and space scientist</td><td>192021</td></tr><tr><td>Audiologist</td><td>291181</td></tr><tr><td>Audiovisual equipment installer and repairer</td><td>492097</td></tr><tr><td>Automotive body and related repairer</td><td>493021</td></tr><tr><td>Automotive glass installer and repairer</td><td>493022</td></tr><tr><td>Automotive service technician and mechanic</td><td>493023</td></tr><tr><td>Avionics technician</td><td>492091</td></tr><tr><td>Baggage porter, bellhop, and concierge</td><td>396010</td></tr><tr><td>Bailiff</td><td>333011</td></tr><tr><td>Baker</td><td>513011</td></tr><tr><td>Barber</td><td>395011</td></tr><tr><td>Bartender</td><td>353011</td></tr><tr><td>Bill and account collector</td><td>433011</td></tr><tr><td>Billing and posting clerk</td><td>433021</td></tr><tr><td>Bioengineer and biomedical engineer</td><td>172031</td></tr><tr><td>Biological scientist</td><td>191020</td></tr><tr><td>Biological technician</td><td>194021</td></tr><tr><td>Boilermaker</td><td>472011</td></tr><tr><td>Bookkeeping, accounting, and auditing clerk</td><td>433031</td></tr><tr><td>Brickmason, blockmason, and stonemason</td><td>472020</td></tr><tr><td>Broadcast announcer and radio disc jockey</td><td>273011</td></tr><tr><td>Broadcast, sound, and lighting technician</td><td>274010</td></tr><tr><td>Brokerage clerk</td><td>434011</td></tr><tr><td>Budget analyst</td><td>132031</td></tr><tr><td>Bus and truck mechanic and diesel engine specialist</td><td>493031</td></tr><tr><td>Business operations specialist, other</td><td>131199</td></tr><tr><td>Butcher and other meat, poultry, and fish processing worker</td><td>513020</td></tr><tr><td>Buyer and purchasing agent, farm products</td><td>131021</td></tr><tr><td>Cabinetmaker and bench carpenter</td><td>517011</td></tr><tr><td>Cardiovascular technologist and technician</td><td>292031</td></tr><tr><td>Cargo and freight agent</td><td>435011</td></tr><tr><td>Carpenter</td><td>472031</td></tr><tr><td>Carpet, floor, and tile installer and finisher</td><td>472040</td></tr><tr><td>Cashier</td><td>412010</td></tr><tr><td>Cement mason, concrete finisher, and terrazzo worker</td><td>472050</td></tr><tr><td>Chef and head cook</td><td>351011</td></tr><tr><td>Chemical engineer</td><td>172041</td></tr><tr><td>Chemical processing machine setter, operator, and tender</td><td>519010</td></tr><tr><td>Chemical technician</td><td>194031</td></tr><tr><td>Chemist and materials scientist</td><td>192030</td></tr><tr><td>Chief executive</td><td>111011</td></tr><tr><td>Child, family, and school social worker</td><td>211021</td></tr><tr><td>Childcare worker</td><td>399011</td></tr><tr><td>Chiropractor</td><td>291011</td></tr><tr><td>Civil engineer</td><td>172051</td></tr><tr><td>Claims adjuster, appraiser, examiner, and investigator</td><td>131030</td></tr><tr><td>Cleaner of vehicles and equipment</td><td>537061</td></tr><tr><td>Clergy</td><td>212011</td></tr><tr><td>Clinical and counseling psychologist</td><td>193033</td></tr><tr><td>Clinical laboratory technologist and technician</td><td>292010</td></tr><tr><td>Coaches and scout</td><td>272022</td></tr><tr><td>Coin, vending, and amusement machine servicer and repairer</td><td>499091</td></tr><tr><td>Commercial and industrial designer</td><td>271021</td></tr><tr><td>Commercial diver</td><td>499092</td></tr><tr><td>Communications equipment operator, other</td><td>432099</td></tr><tr><td>Compensation and benefits manager</td><td>113111</td></tr><tr><td>Compensation, benefits, and job analysis specialist</td><td>131141</td></tr><tr><td>Compliance officer</td><td>131041</td></tr><tr><td>Computer and information research scientist</td><td>151221</td></tr><tr><td>Computer and information systems manager</td><td>113021</td></tr><tr><td>Computer hardware engineer</td><td>172061</td></tr><tr><td>Computer network architect</td><td>151241</td></tr><tr><td>Computer numerically controlled tool operator and programmer</td><td>519160</td></tr><tr><td>Computer occupation, other</td><td>151299</td></tr><tr><td>Computer programmer</td><td>151251</td></tr><tr><td>Computer support specialist</td><td>151230</td></tr><tr><td>Computer systems analyst</td><td>151211</td></tr><tr><td>Computer, automated teller, and office machine repairer</td><td>492011</td></tr><tr><td>Conservation scientist and forester</td><td>191030</td></tr><tr><td>Construction and building inspector</td><td>474011</td></tr><tr><td>Construction equipment operator</td><td>472070</td></tr><tr><td>Construction laborer</td><td>472061</td></tr><tr><td>Construction manager</td><td>119021</td></tr><tr><td>Control and valve installer and repairer</td><td>499010</td></tr><tr><td>Conveyor, dredge, and hoist and winch operator</td><td>5370XX</td></tr><tr><td>Cook</td><td>352010</td></tr><tr><td>Correctional officer and jailer</td><td>333012</td></tr><tr><td>Correspondence clerk</td><td>434021</td></tr><tr><td>Cost estimator</td><td>131051</td></tr><tr><td>Counselor, other</td><td>211019</td></tr><tr><td>Counter and rental clerk</td><td>412021</td></tr><tr><td>Courier and messenger</td><td>435021</td></tr><tr><td>Court reporter and simultaneous captioner</td><td>273092</td></tr><tr><td>Court, municipal, and license clerk</td><td>434031</td></tr><tr><td>Crane and tower operator</td><td>537021</td></tr><tr><td>Credit analyst</td><td>132041</td></tr><tr><td>Credit authorizer, checker, and clerk</td><td>434041</td></tr><tr><td>Credit counselor and loan officer</td><td>132070</td></tr><tr><td>Crossing guard and flagger</td><td>339091</td></tr><tr><td>Crushing, grinding, polishing, mixing, and blending worker</td><td>519020</td></tr><tr><td>Customer service representative</td><td>434051</td></tr><tr><td>Cutting worker</td><td>519030</td></tr><tr><td>Cutting, punching, and press machine setter, operator, and tender, metal and plastic</td><td>514031</td></tr><tr><td>Dancer and choreographer</td><td>272030</td></tr><tr><td>Data labeler and data entry keyer</td><td>439021</td></tr><tr><td>Database administrator and architect</td><td>15124X</td></tr><tr><td>Dental and ophthalmic laboratory technician and medical appliance technician</td><td>519080</td></tr><tr><td>Dental assistant</td><td>319091</td></tr><tr><td>Dental hygienist</td><td>291292</td></tr><tr><td>Dentist</td><td>291020</td></tr><tr><td>Derrick, rotary drill, and service unit operator, oil and gas</td><td>475010</td></tr><tr><td>Desktop publisher</td><td>439031</td></tr><tr><td>Detective and criminal investigator</td><td>333021</td></tr><tr><td>Diagnostic medical sonographer</td><td>292032</td></tr><tr><td>Dietetic technician and ophthalmic medical technician</td><td>29205X</td></tr><tr><td>Dietitian and nutritionist</td><td>291031</td></tr><tr><td>Dining room and cafeteria attendant and bartender helper</td><td>359011</td></tr><tr><td>Director, religious activities and educatio</td><td>212021</td></tr><tr><td>Disc jockey, except radio</td><td>272091</td></tr><tr><td>Dishwasher</td><td>359021</td></tr><tr><td>Dispatcher, except police, fire, and ambulance</td><td>435032</td></tr><tr><td>Door-to-door sales worker, news and street vendor, and related worker</td><td>419091</td></tr><tr><td>Driver/sales worker and truck driver</td><td>533030</td></tr><tr><td>Drywall installer, ceiling tile installer, and taper</td><td>472080</td></tr><tr><td>Earth driller, except oil and gas</td><td>475023</td></tr><tr><td>Economist</td><td>193011</td></tr><tr><td>Editor</td><td>273041</td></tr><tr><td>Education and childcare administrator</td><td>119030</td></tr><tr><td>Educational, guidance, and career counselor and advisor</td><td>211012</td></tr><tr><td>Electric motor, power tool, and related repairer</td><td>492092</td></tr><tr><td>Electrical and electronic engineering technologist and technician</td><td>173023</td></tr><tr><td>Electrical and electronics engineer</td><td>172070</td></tr><tr><td>Electrical and electronics installer and repairer, transportation equipment</td><td>492093</td></tr><tr><td>Electrical and electronics repairer, industrial and utility</td><td>49209X</td></tr><tr><td>Electrical power-line installer and repairer</td><td>499051</td></tr><tr><td>Electrical, electronics, and electromechanical assembler</td><td>512020</td></tr><tr><td>Electrician</td><td>472111</td></tr><tr><td>Electronic equipment installer and repairer, motor vehicles</td><td>492096</td></tr><tr><td>Elementary and middle school teacher</td><td>252020</td></tr><tr><td>Elevator and escalator installer and repairer</td><td>474021</td></tr><tr><td>Eligibility interviewer, government programs</td><td>434061</td></tr><tr><td>Embalmer, crematory operator and funeral attendant</td><td>3940XX</td></tr><tr><td>Emergency management director</td><td>119161</td></tr><tr><td>Emergency medical technician</td><td>292042</td></tr><tr><td>Emergency medicine physician</td><td>291214</td></tr><tr><td>Engine and other machine assembler</td><td>512031</td></tr><tr><td>Engineer, other</td><td>172199</td></tr><tr><td>Entertainer and performer, sports and related worker, other</td><td>272099</td></tr><tr><td>Entertainment and recreation manager</td><td>119070</td></tr><tr><td>Environmental engineer</td><td>172081</td></tr><tr><td>Environmental science and geoscience technician</td><td>194040</td></tr><tr><td>Environmental scientist and specialist, including health</td><td>192041</td></tr><tr><td>Etcher and engraver</td><td>519194</td></tr><tr><td>Excavating and loading machine and dragline operator, surface mining</td><td>475022</td></tr><tr><td>Executive secretary and executive administrative assistant</td><td>436011</td></tr><tr><td>Exercise physiologist</td><td>291128</td></tr><tr><td>Exercise trainer and group fitness instructor</td><td>399031</td></tr><tr><td>Explosives worker, ordnance handling expert, and blaster</td><td>475032</td></tr><tr><td>Extruding, forming, pressing, and compacting machine setter, operator, and tender</td><td>519041</td></tr><tr><td>Facilities manager</td><td>113013</td></tr><tr><td>Farmer, rancher, and other agricultural manager</td><td>119013</td></tr><tr><td>Fashion designer</td><td>271022</td></tr><tr><td>Fast food and counter worker</td><td>353023</td></tr><tr><td>Fence erector</td><td>474031</td></tr><tr><td>File clerk</td><td>434071</td></tr><tr><td>Financial and investment analyst</td><td>132051</td></tr><tr><td>Financial clerk, other</td><td>433099</td></tr><tr><td>Financial examiner</td><td>132061</td></tr><tr><td>Financial manager</td><td>113031</td></tr><tr><td>Fire inspector</td><td>332020</td></tr><tr><td>Firefighter</td><td>332011</td></tr><tr><td>First-line enlisted military supervisor</td><td>552010</td></tr><tr><td>First-line supervisor of construction trades and extraction worker</td><td>471011</td></tr><tr><td>First-line supervisor of correctional officer</td><td>331011</td></tr><tr><td>First-line supervisor of farming, fishing, and forestry worker</td><td>451011</td></tr><tr><td>First-line supervisor of firefighting and prevention worker</td><td>331021</td></tr><tr><td>First-line supervisor of food preparation and serving workers</td><td>351012</td></tr><tr><td>First-line supervisor of housekeeping and janitorial workers</td><td>371011</td></tr><tr><td>First-line supervisor of landscaping, lawn service, and groundskeeping workers</td><td>371012</td></tr><tr><td>First-line supervisor of mechanics, installers, and repairers</td><td>491011</td></tr><tr><td>First-line supervisor of non-retail sales workers</td><td>411012</td></tr><tr><td>First-line supervisor of office and administrative support workers</td><td>431011</td></tr><tr><td>First-line supervisor of police and detective</td><td>331012</td></tr><tr><td>First-line supervisor of production and operating worker</td><td>511011</td></tr><tr><td>First-line supervisor of protective service worker, other</td><td>331099</td></tr><tr><td>First-line supervisor of retail sales workers</td><td>411011</td></tr><tr><td>First-line supervisor of security worker</td><td>331091</td></tr><tr><td>Fish and game warden</td><td>333031</td></tr><tr><td>Fishing and hunting worker</td><td>453031</td></tr><tr><td>Flight attendant</td><td>532031</td></tr><tr><td>Floral designer</td><td>271023</td></tr><tr><td>Food and tobacco roasting, baking, and drying machine operator and tender</td><td>513091</td></tr><tr><td>Food batchmaker</td><td>513092</td></tr><tr><td>Food cooking machine operator and tender</td><td>513093</td></tr><tr><td>Food preparation and serving related worker, other</td><td>359099</td></tr><tr><td>Food preparation worker</td><td>352021</td></tr><tr><td>Food processing worker, other</td><td>513099</td></tr><tr><td>Food server, nonrestaurant</td><td>353041</td></tr><tr><td>Food service manager</td><td>119051</td></tr><tr><td>Forest and conservation worker</td><td>454011</td></tr><tr><td>Forming machine setter, operator, and tender, metal and plastic</td><td>514020</td></tr><tr><td>Fundraiser</td><td>131131</td></tr><tr><td>Funeral home manager</td><td>119171</td></tr><tr><td>Furnace, kiln, oven, drier, and kettle operator and tender</td><td>519051</td></tr><tr><td>Furniture finisher</td><td>517021</td></tr><tr><td>Gambling cage worker</td><td>433041</td></tr><tr><td>Gambling services worker</td><td>393010</td></tr><tr><td>General and operations manager</td><td>111021</td></tr><tr><td>Geoscientist and hydrologist, except geographer</td><td>19204X</td></tr><tr><td>Glazier</td><td>472121</td></tr><tr><td>Grader and sorter, agricultural product</td><td>452041</td></tr><tr><td>Graphic designer</td><td>271024</td></tr><tr><td>Grinding, lapping, polishing, and buffing machine tool setter, operator, and tender, metal and plastic</td><td>514033</td></tr><tr><td>Hairdresser, hairstylist, and cosmetologist</td><td>395012</td></tr><tr><td>Hazardous materials removal worker</td><td>474041</td></tr><tr><td>Healthcare diagnosing or treating practitioner, other</td><td>291299</td></tr><tr><td>Healthcare social worker</td><td>211022</td></tr><tr><td>Heating, air conditioning, and refrigeration mechanic and installer</td><td>499021</td></tr><tr><td>Heavy vehicle and mobile equipment service technician and mechanic</td><td>493040</td></tr><tr><td>Helper--installation, maintenance, and repair worker</td><td>499098</td></tr><tr><td>Helper--production worker</td><td>519198</td></tr><tr><td>Helper, construction trade</td><td>473010</td></tr><tr><td>Highway maintenance worker</td><td>474051</td></tr><tr><td>Home appliance repairer</td><td>499031</td></tr><tr><td>Home health aide</td><td>311121</td></tr><tr><td>Host and hostess, restaurant, lounge, and coffee shop</td><td>359031</td></tr><tr><td>Hotel, motel, and resort desk clerk</td><td>434081</td></tr><tr><td>Human resources assistant, except payroll and timekeeping</td><td>434161</td></tr><tr><td>Human resources manager</td><td>113121</td></tr><tr><td>Human resources worker</td><td>131070</td></tr><tr><td>Industrial and refractory machinery mechanic</td><td>49904X</td></tr><tr><td>Industrial engineer, including health and safety</td><td>172110</td></tr><tr><td>Industrial production manager</td><td>113051</td></tr><tr><td>Industrial truck and tractor operator</td><td>537051</td></tr><tr><td>Information and record clerk, other</td><td>434199</td></tr><tr><td>Information security analyst</td><td>151212</td></tr><tr><td>Inspector, tester, sorter, sampler, and weigher</td><td>519061</td></tr><tr><td>Insulation worker</td><td>472130</td></tr><tr><td>Insurance claims and policy processing clerk</td><td>439041</td></tr><tr><td>Insurance sales agent</td><td>413021</td></tr><tr><td>Insurance underwriter</td><td>132053</td></tr><tr><td>Interior designer</td><td>271025</td></tr><tr><td>Interpreter and translator</td><td>273091</td></tr><tr><td>Interviewer, except eligibility and loan</td><td>434111</td></tr><tr><td>Janitor and building cleaner</td><td>37201X</td></tr><tr><td>Jeweler and precious stone and metal worker</td><td>519071</td></tr><tr><td>Judge, magistrate, and other judicial worker</td><td>231020</td></tr><tr><td>Judicial law clerk</td><td>231012</td></tr><tr><td>Laborer and freight, stock, and material mover, hand</td><td>537062</td></tr><tr><td>Landscape architect</td><td>171012</td></tr><tr><td>Landscaping and groundskeeping worker</td><td>373011</td></tr><tr><td>Laundry and dry-cleaning worker</td><td>516011</td></tr><tr><td>Lawyer</td><td>231011</td></tr><tr><td>Legal secretary and administrative assistant</td><td>436012</td></tr><tr><td>Legal support worker, other</td><td>232099</td></tr><tr><td>Legislator</td><td>111031</td></tr><tr><td>Librarian and media collections specialist</td><td>254022</td></tr><tr><td>Library assistant, clerical</td><td>434121</td></tr><tr><td>Library technician</td><td>254031</td></tr><tr><td>Licensed practical and licensed vocational nurse</td><td>292061</td></tr><tr><td>Life scientist, other</td><td>191099</td></tr><tr><td>Loan interviewer and clerk</td><td>434131</td></tr><tr><td>Locksmith and safe repairer</td><td>499094</td></tr><tr><td>Locomotive engineer and operator</td><td>534010</td></tr><tr><td>Lodging manager</td><td>119081</td></tr><tr><td>Logging worker</td><td>454020</td></tr><tr><td>Logistician</td><td>131081</td></tr><tr><td>Machine feeder and offbearer</td><td>537063</td></tr><tr><td>Machinist</td><td>514041</td></tr><tr><td>Magnetic resonance imaging technologist</td><td>292035</td></tr><tr><td>Maids and housekeeping cleaner</td><td>372012</td></tr><tr><td>Mail clerk and mail machine operator, except postal service</td><td>439051</td></tr><tr><td>Maintenance and repair worker, general</td><td>499071</td></tr><tr><td>Maintenance worker, machinery</td><td>499043</td></tr><tr><td>Management analyst</td><td>131111</td></tr><tr><td>Manager, other</td><td>119199</td></tr><tr><td>Manicurist and pedicurist</td><td>395092</td></tr><tr><td>Manufactured building and mobile home installer</td><td>499095</td></tr><tr><td>Marine engineer and naval architect</td><td>172121</td></tr><tr><td>Market research analyst and marketing specialist</td><td>131161</td></tr><tr><td>Marketing manager</td><td>112021</td></tr><tr><td>Marriage and family therapist</td><td>211013</td></tr><tr><td>Massage therapist</td><td>319011</td></tr><tr><td>Materials engineer</td><td>172131</td></tr><tr><td>Mathematician</td><td>152021</td></tr><tr><td>Mechanical engineer</td><td>172141</td></tr><tr><td>Media and communication equipment worker, other</td><td>274099</td></tr><tr><td>Media and communication worker, other</td><td>273099</td></tr><tr><td>Medical and health services manager</td><td>119111</td></tr><tr><td>Medical assistant</td><td>319092</td></tr><tr><td>Medical records specialist</td><td>292072</td></tr><tr><td>Medical scientist</td><td>191040</td></tr><tr><td>Medical secretary and administrative assistant</td><td>436013</td></tr><tr><td>Medical transcriptionist</td><td>319094</td></tr><tr><td>Meeting, convention, and event planner</td><td>131121</td></tr><tr><td>Mental health and substance abuse social worker</td><td>211023</td></tr><tr><td>Mental health counselor</td><td>211014</td></tr><tr><td>Merchandise displayer and window trimmer</td><td>271026</td></tr><tr><td>Metal furnace operator, tender, pourer, and caster</td><td>514050</td></tr><tr><td>Meter reader, utilities</td><td>435041</td></tr><tr><td>Military enlisted tactical operations and air/weapons specialist and crew member</td><td>553010</td></tr><tr><td>Military officer special and tactical operations leader</td><td>551010</td></tr><tr><td>Military, rank not specified</td><td>554010</td></tr><tr><td>Millwright</td><td>499044</td></tr><tr><td>Mining and geological engineer, including mining safety engineer</td><td>172151</td></tr><tr><td>Miscellaneous agricultural worker</td><td>452090</td></tr><tr><td>Miscellaneous construction and related worker</td><td>474090</td></tr><tr><td>Miscellaneous health technologist and technician</td><td>292090</td></tr><tr><td>Miscellaneous plant and system operator</td><td>518090</td></tr><tr><td>Miscellaneous social scientist and related worker</td><td>193090</td></tr><tr><td>Miscellaneous vehicle and mobile equipment mechanic, installer, and repairer</td><td>493090</td></tr><tr><td>Model maker and patternmaker, metal and plastic</td><td>514060</td></tr><tr><td>Model, demonstrator, and product promoter</td><td>419010</td></tr><tr><td>Molder and molding machine setter, operator, and tender, metal and plastic</td><td>514070</td></tr><tr><td>Molder, shaper, and caster, except metal and plastic</td><td>519195</td></tr><tr><td>Mortician, undertaker, and funeral arranger</td><td>394031</td></tr><tr><td>Motor vehicle operator, other</td><td>533099</td></tr><tr><td>Music director and composer</td><td>272041</td></tr><tr><td>Musician and singer</td><td>272042</td></tr><tr><td>Natural sciences manager</td><td>119121</td></tr><tr><td>Network and computer systems administrator</td><td>151244</td></tr><tr><td>New accounts clerk</td><td>434141</td></tr><tr><td>News analyst, reporter, and journalist</td><td>273023</td></tr><tr><td>Nuclear engineer</td><td>172161</td></tr><tr><td>Nuclear medicine technologist and medical dosimetrist</td><td>29203X</td></tr><tr><td>Nuclear technician</td><td>194051</td></tr><tr><td>Nurse anesthetist</td><td>291151</td></tr><tr><td>Nurse midwife</td><td>291161</td></tr><tr><td>Nurse practitioner</td><td>291171</td></tr><tr><td>Nursing assistant</td><td>311131</td></tr><tr><td>Occupational health and safety specialist and technician</td><td>195010</td></tr><tr><td>Occupational therapist</td><td>291122</td></tr><tr><td>Occupational therapy assistant and aide</td><td>312010</td></tr><tr><td>Office and administrative support worker, other</td><td>439199</td></tr><tr><td>Office clerk, general</td><td>439061</td></tr><tr><td>Office machine operator, except computer</td><td>439071</td></tr><tr><td>Operations research analyst</td><td>152031</td></tr><tr><td>Optician, dispensing</td><td>292081</td></tr><tr><td>Optometrist</td><td>291041</td></tr><tr><td>Order clerk</td><td>434151</td></tr><tr><td>Orderly and psychiatric aide</td><td>31113X</td></tr><tr><td>Other assembler and fabricator</td><td>5120XX</td></tr><tr><td>Other community and social service specialist</td><td>21109X</td></tr><tr><td>Other designer</td><td>27102X</td></tr><tr><td>Other drafter</td><td>17301X</td></tr><tr><td>Other educational instruction and library worker</td><td>2590XX</td></tr><tr><td>Other engineering technologist and technician</td><td>17302X</td></tr><tr><td>Other entertainment attendant and related worker</td><td>3930XX</td></tr><tr><td>Other extraction worker</td><td>4750XX</td></tr><tr><td>Other financial specialist</td><td>1320XX</td></tr><tr><td>Other grounds maintenance worker</td><td>37301X</td></tr><tr><td>Other healthcare practitioner and technical occupation</td><td>299000</td></tr><tr><td>Other healthcare support worker</td><td>31909X</td></tr><tr><td>Other installation, maintenance, and repair worker</td><td>49909X</td></tr><tr><td>Other life, physical, and social science technician</td><td>1940XX</td></tr><tr><td>Other machine tool setter, operator, and tender, metal and plastic</td><td>51403X</td></tr><tr><td>Other material moving worker</td><td>5371XX</td></tr><tr><td>Other mathematical science occupation</td><td>1520XX</td></tr><tr><td>Other metal worker and plastic worker</td><td>514XXX</td></tr><tr><td>Other personal appearance worker</td><td>39509X</td></tr><tr><td>Other physician</td><td>2912XX</td></tr><tr><td>Other production equipment operator and tender</td><td>51919X</td></tr><tr><td>Other production worker</td><td>5191XX</td></tr><tr><td>Other protective service worker</td><td>33909X</td></tr><tr><td>Other psychologist</td><td>19303X</td></tr><tr><td>Other rail transportation worker</td><td>5340XX</td></tr><tr><td>Other teacher and instructor</td><td>2530XX</td></tr><tr><td>Other textile, apparel, and furnishings worker</td><td>51609X</td></tr><tr><td>Other transportation worker</td><td>5360XX</td></tr><tr><td>Other woodworker</td><td>5170XX</td></tr><tr><td>Packaging and filling machine operator and tender</td><td>519111</td></tr><tr><td>Packer and packager, hand</td><td>537064</td></tr><tr><td>Painter and paperhanger</td><td>472140</td></tr><tr><td>Painting worker</td><td>519120</td></tr><tr><td>Paper goods machine setter, operator, and tender</td><td>519196</td></tr><tr><td>Paralegal and legal assistant</td><td>232011</td></tr><tr><td>Paramedic</td><td>292043</td></tr><tr><td>Parking attendant</td><td>536021</td></tr><tr><td>Parking enforcement worker</td><td>333041</td></tr><tr><td>Parts salesperson</td><td>412022</td></tr><tr><td>Passenger attendant</td><td>536061</td></tr><tr><td>Payroll and timekeeping clerk</td><td>433051</td></tr><tr><td>Personal care and service worker, other</td><td>399099</td></tr><tr><td>Personal financial advisor</td><td>132052</td></tr><tr><td>Personal service manager, other</td><td>119179</td></tr><tr><td>Pest control worker</td><td>372021</td></tr><tr><td>Petroleum engineer</td><td>172171</td></tr><tr><td>Pharmacist</td><td>291051</td></tr><tr><td>Pharmacy aide</td><td>319095</td></tr><tr><td>Pharmacy technician</td><td>292052</td></tr><tr><td>Phlebotomist</td><td>319097</td></tr><tr><td>Photographer</td><td>274021</td></tr><tr><td>Photographic process worker and processing machine operator</td><td>519151</td></tr><tr><td>Physical scientist, other</td><td>192099</td></tr><tr><td>Physical therapist</td><td>291123</td></tr><tr><td>Physical therapist assistant and aide</td><td>312020</td></tr><tr><td>Physician assistant</td><td>291071</td></tr><tr><td>Pipelayer</td><td>472151</td></tr><tr><td>Plasterer and stucco mason</td><td>472161</td></tr><tr><td>Plumber, pipefitter, and steamfitter</td><td>472152</td></tr><tr><td>Podiatrist</td><td>291081</td></tr><tr><td>Police officer</td><td>333050</td></tr><tr><td>Postal service clerk</td><td>435051</td></tr><tr><td>Postal service mail carrier</td><td>435052</td></tr><tr><td>Postal service mail sorter, processor, and processing machine operator</td><td>435053</td></tr><tr><td>Postmaster and mail superintendent</td><td>119131</td></tr><tr><td>Postsecondary teacher</td><td>251000</td></tr><tr><td>Power plant operator, distributor, and dispatcher</td><td>518010</td></tr><tr><td>Precision instrument and equipment repairer</td><td>499060</td></tr><tr><td>Prepress technician and worker</td><td>515111</td></tr><tr><td>Preschool and kindergarten teacher</td><td>252010</td></tr><tr><td>Presser, textile, garment, and related material</td><td>516021</td></tr><tr><td>Print binding and finishing worker</td><td>515113</td></tr><tr><td>Printing press operator</td><td>515112</td></tr><tr><td>Private detective and investigator</td><td>339021</td></tr><tr><td>Probation officer and correctional treatment specialist</td><td>211092</td></tr><tr><td>Procurement clerk</td><td>433061</td></tr><tr><td>Producer and director</td><td>272012</td></tr><tr><td>Production, planning, and expediting clerk</td><td>435061</td></tr><tr><td>Project management specialist</td><td>131082</td></tr><tr><td>Proofreader and copy marker</td><td>439081</td></tr><tr><td>Property appraiser and assessor</td><td>132020</td></tr><tr><td>Property, real estate, and community association manager</td><td>119141</td></tr><tr><td>Psychiatric technician</td><td>292053</td></tr><tr><td>Public relations and fundraising manager</td><td>112030</td></tr><tr><td>Public relations specialist</td><td>273031</td></tr><tr><td>Public safety telecommunicator</td><td>435031</td></tr><tr><td>Pumping station operator</td><td>537070</td></tr><tr><td>Purchasing agent, except wholesale, retail, and farm products</td><td>131023</td></tr><tr><td>Purchasing manager</td><td>113061</td></tr><tr><td>Radiation therapist</td><td>291124</td></tr><tr><td>Radio and telecommunications equipment installer and repairer</td><td>492020</td></tr><tr><td>Radiologic technologist and technician</td><td>292034</td></tr><tr><td>Radiologist</td><td>291224</td></tr><tr><td>Rail-track laying and maintenance equipment operator</td><td>474061</td></tr><tr><td>Railroad conductor and yardmaster</td><td>534031</td></tr><tr><td>Real estate broker and sales agent</td><td>419020</td></tr><tr><td>Receptionist and information clerk</td><td>434171</td></tr><tr><td>Recreation worker</td><td>399032</td></tr><tr><td>Recreational therapist</td><td>291125</td></tr><tr><td>Refuse and recyclable material collector</td><td>537081</td></tr><tr><td>Registered nurse</td><td>291141</td></tr><tr><td>Rehabilitation counselor</td><td>211015</td></tr><tr><td>Reinforcing iron and rebar worker</td><td>472171</td></tr><tr><td>Religious worker, other</td><td>212099</td></tr><tr><td>Reservation and transportation ticket agent and travel clerk</td><td>434181</td></tr><tr><td>Residential advisor</td><td>399041</td></tr><tr><td>Respiratory therapist</td><td>291126</td></tr><tr><td>Retail salesperson</td><td>412031</td></tr><tr><td>Rigger</td><td>499096</td></tr><tr><td>Roofer</td><td>472181</td></tr><tr><td>Roustabout, oil and gas</td><td>475071</td></tr><tr><td>Sailor and marine oiler</td><td>535011</td></tr><tr><td>Sales and related worker, other</td><td>419099</td></tr><tr><td>Sales engineer</td><td>419031</td></tr><tr><td>Sales manager</td><td>112022</td></tr><tr><td>Sales representative of services, except advertising, insurance, financial services, and travel</td><td>413091</td></tr><tr><td>Sales representatives, wholesale and manufacturing</td><td>414010</td></tr><tr><td>Sawing machine setter, operator, and tender, wood</td><td>517041</td></tr><tr><td>School bus driver</td><td>533051</td></tr><tr><td>School bus monitor</td><td>339094</td></tr><tr><td>School psychologist</td><td>193034</td></tr><tr><td>Secondary school teacher</td><td>252030</td></tr><tr><td>Secretary and administrative assistant, except legal, medical, and executive</td><td>436014</td></tr><tr><td>Securities, commodities, and financial services sales agent</td><td>413031</td></tr><tr><td>Security and fire alarm systems installer</td><td>492098</td></tr><tr><td>Security guard and gambling surveillance officer</td><td>339030</td></tr><tr><td>Septic tank servicer and sewer pipe cleaner</td><td>474071</td></tr><tr><td>Sewing machine operator</td><td>516031</td></tr><tr><td>Sheet metal worker</td><td>472211</td></tr><tr><td>Ship and boat captain and operator</td><td>535020</td></tr><tr><td>Ship engineer</td><td>535031</td></tr><tr><td>Shipping, receiving, and inventory clerk</td><td>435071</td></tr><tr><td>Shoe and leather worker</td><td>516040</td></tr><tr><td>Shuttle driver and chauffeur</td><td>533053</td></tr><tr><td>Skincare specialist</td><td>395094</td></tr><tr><td>Small engine mechanic</td><td>493050</td></tr><tr><td>Social and community service manager</td><td>119151</td></tr><tr><td>Social and human service assistant</td><td>211093</td></tr><tr><td>Social science research assistant</td><td>194061</td></tr><tr><td>Social worker, other</td><td>211029</td></tr><tr><td>Sociologist</td><td>193041</td></tr><tr><td>Software developer</td><td>151252</td></tr><tr><td>Software quality assurance analyst and tester</td><td>151253</td></tr><tr><td>Solar photovoltaic installer</td><td>472231</td></tr><tr><td>Special education teacher</td><td>252050</td></tr><tr><td>Speech-language pathologist</td><td>291127</td></tr><tr><td>Stationary engineer and boiler operator</td><td>518021</td></tr><tr><td>Statistical assistant</td><td>439111</td></tr><tr><td>Statistician</td><td>152041</td></tr><tr><td>Stocker and order filler</td><td>537065</td></tr><tr><td>Structural iron and steel worker</td><td>472221</td></tr><tr><td>Structural metal fabricator and fitter</td><td>512041</td></tr><tr><td>Substance abuse and behavioral disorder counselor</td><td>211011</td></tr><tr><td>Supervisor of personal care and service worker</td><td>391000</td></tr><tr><td>Supervisor of transportation and material moving worker</td><td>531000</td></tr><tr><td>Surgeon</td><td>291240</td></tr><tr><td>Surgical technologist</td><td>292055</td></tr><tr><td>Survey researcher</td><td>193022</td></tr><tr><td>Surveying and mapping technician</td><td>173031</td></tr><tr><td>Surveyor, cartographer, and photogrammetrist</td><td>171020</td></tr><tr><td>Switchboard operator, including answering service</td><td>432011</td></tr><tr><td>Tailor, dressmaker, and sewer</td><td>516050</td></tr><tr><td>Tax examiner and collector, and revenue agent</td><td>132081</td></tr><tr><td>Tax preparer</td><td>132082</td></tr><tr><td>Taxi driver</td><td>533054</td></tr><tr><td>Teaching assistant</td><td>259040</td></tr><tr><td>Technical writer</td><td>273042</td></tr><tr><td>Telecommunications line installer and repairer</td><td>499052</td></tr><tr><td>Telemarketer</td><td>419041</td></tr><tr><td>Telephone operator</td><td>432021</td></tr><tr><td>Television, video, and film camera operator and editor</td><td>274030</td></tr><tr><td>Teller</td><td>433071</td></tr><tr><td>Textile machine setter, operator, and tender</td><td>516060</td></tr><tr><td>Therapist, other</td><td>291129</td></tr><tr><td>Tire builder</td><td>519197</td></tr><tr><td>Title examiner, abstractor, and searcher</td><td>232093</td></tr><tr><td>Tool and die maker</td><td>514111</td></tr><tr><td>Tour and travel guide</td><td>397010</td></tr><tr><td>Training and development manager</td><td>113131</td></tr><tr><td>Training and development specialist</td><td>131151</td></tr><tr><td>Transit and intercity bus driver</td><td>533052</td></tr><tr><td>Transportation inspector</td><td>536051</td></tr><tr><td>Transportation security screener</td><td>339093</td></tr><tr><td>Transportation service attendant</td><td>536030</td></tr><tr><td>Transportation, storage, and distribution manager</td><td>113071</td></tr><tr><td>Travel agent</td><td>413041</td></tr><tr><td>Tree trimmer and pruner</td><td>373013</td></tr><tr><td>Tutor</td><td>253041</td></tr><tr><td>Umpire, referee, and other sports official</td><td>272023</td></tr><tr><td>Underground mining machine operator</td><td>475040</td></tr><tr><td>Unemployed, with no work experience in the last 5 years or earlier or never worked</td><td>999999</td></tr><tr><td>Upholsterer</td><td>516093</td></tr><tr><td>Urban and regional planner</td><td>193051</td></tr><tr><td>Usher, lobby attendant, and ticket taker</td><td>393031</td></tr><tr><td>Veterinarian</td><td>291131</td></tr><tr><td>Veterinary assistant and laboratory animal caretaker</td><td>319096</td></tr><tr><td>Veterinary technologist and technician</td><td>292056</td></tr><tr><td>Waiter or waitress</td><td>353031</td></tr><tr><td>Water and wastewater treatment plant and system operator</td><td>518031</td></tr><tr><td>Web and digital interface designer</td><td>151255</td></tr><tr><td>Web developer</td><td>151254</td></tr><tr><td>Weigher, measurer, checker, and sampler, recordkeeping</td><td>435111</td></tr><tr><td>Welding, soldering, and brazing worker</td><td>514120</td></tr><tr><td>Wholesale and retail buyer, except farm products</td><td>131022</td></tr><tr><td>Wind turbine service technician</td><td>499081</td></tr><tr><td>Woodworking machine setter, operator, and tender, except sawing</td><td>517042</td></tr><tr><td>Word processor and typist</td><td>439022</td></tr><tr><td>Writer and autho</td><td>273043</td></tr></tbody></table>


# Accounts

529\
string\
Tax-advantaged college savings and prepaid tuition 529 plans (US)\
401a\
string\
Employer-sponsored money-purchase 401(a) retirement plan (US)\
401k\
string\
Standard 401(k) retirement account (US)\
403B\
string\
403(b) retirement savings account for non-profits and schools (US)\
457b\
string\
Tax-advantaged deferred-compensation 457(b) retirement plan for governments and non-profits (US)\
brokerage\
string\
Standard brokerage account\
cash isa\
string\
Individual Savings Account (ISA) that pays interest tax-free (UK)\
crypto exchange\
string\
Standard cryptocurrency exchange account\
education savings account\
string\
Tax-advantaged Coverdell Education Savings Account (ESA) (US)\
fixed annuity\
string\
Fixed annuity\
gic\
string\
Guaranteed Investment Certificate (Canada)\
health reimbursement arrangement\
string\
Tax-advantaged Health Reimbursement Arrangement (HRA) benefit plan (US)\
hsa\
string\
Non-cash tax-advantaged medical Health Savings Account (HSA) (US)\
ira\
string\
Traditional Individual Retirement Account (IRA) (US)\
isa\
string\
Non-cash Individual Savings Account (ISA) (UK)\
keogh\
string\
Keogh self-employed retirement plan (US)\
lif\
string\
Life Income Fund (LIF) retirement account (Canada)\
life insurance\
string\
Life insurance account\
lira\
string\
Locked-in Retirement Account (LIRA) (Canada)\
lrif\
string\
Locked-in Retirement Income Fund (LRIF) (Canada)\
lrsp\
string\
Locked-in Retirement Savings Plan (Canada)\
mutual fund\
string\
Mutual fund account\
non-custodial wallet\
string\
A cryptocurrency wallet where the user controls the private key\
non-taxable brokerage account\
string\
A non-taxable brokerage account that is not covered by a more specific subtype\
other\
string\
An account whose type could not be determined\
other annuity\
string\
An annuity account not covered by other subtypes\
other insurance\
string\
An insurance account not covered by other subtypes\
pension\
string\
Standard pension account\
prif\
string\
Prescribed Registered Retirement Income Fund (Canada)\
profit sharing plan\
string\
Plan that gives employees share of company profits\
qshr\
string\
Qualifying share account\
rdsp\
string\
Registered Disability Savings Plan (RSDP) (Canada)\
resp\
string\
Registered Education Savings Plan (Canada)\
retirement\
string\
Retirement account not covered by other subtypes\
rlif\
string\
Restricted Life Income Fund (RLIF) (Canada)\
roth\
string\
Roth IRA (US)\
roth 401k\
string\
Employer-sponsored Roth 401(k) plan (US)\
rrif\
string\
Registered Retirement Income Fund (RRIF) (Canada)\
rrsp\
string\
Registered Retirement Savings Plan (Canadian, similar to US 401(k))\
sarsep\
string\
Salary Reduction Simplified Employee Pension Plan (SARSEP), discontinued retirement plan (US)\
sep ira\
string\
Simplified Employee Pension IRA (SEP IRA), retirement plan for small businesses and self-employed (US)\
simple ira\
string\
Savings Incentive Match Plan for Employees IRA, retirement plan for small businesses (US)\
sipp\
string\
Self-Invested Personal Pension (SIPP) (UK)\
stock plan\
string\
Standard stock plan account\
tfsa\
string\
Tax-Free Savings Account (TFSA), a retirement plan similar to a Roth IRA (Canada)\
thrift savings plan\
string\
Thrift Savings Plan, a retirement savings and investment plan for Federal employees and members of the uniformed services.\
trust\
string\
Account representing funds or assets held by a trustee for the benefit of a beneficiary. Includes both revocable and irrevocable trusts.\
ugma\
string\
'Uniform Gift to Minors Act' (brokerage account for minors, US)\
utma\
string\
'Uniform Transfers to Minors Act' (brokerage account for minors, US)\
variable annuity\
string\
Tax-deferred capital accumulation annuity contract


# Tokenized account number (TAN)

Tokenized account numbers

Chase\
US Bank\
PNC


# Brokers

ACATs Transfer (Automated Customer Account Transfer Service):

It allows the transfer of stocks, options, mutual funds, and cash between brokers through an automated service.

Key Details: Total (all assets) or partial (select specific assets). Matching details like account name and tax identification number are crucial.

2. ATON Transfer (Account Transfer on Notification):

Similar to ACATs but specific for transfers between Canadian and U.S. brokers.

Key Details: Like ACATS, it offers options for total or partial transfers and requires matching details in the account.

3. DRS Transfer (Direct Registration System):

Facilitates the electronic transfer of stocks and warrants between the Transfer Agent and the trader's account.

Key Details: Requires precise matching in details such as account name, tax identification number, and client type.

4. DWAC Transfer (Deposit/Withdrawal at Custodian):

Enables the automated transfer of stocks and warrants between a Transfer Agent and the trader's account.

Key Details: Similar to others, account information must match for a successful transfer.

5. FOP Transfer (Free of Payment):

Moves stock, warrant, and bond positions from or to another U.S. bank or broker that is a DTC member.

Key Details: Inbound transfers are notifications; instructing the external broker is essential to complete the transfer.

6. Internal Position Transfer:

Allows the transfer of positions between one's accounts within the same broker.

Key Details: Specific rules apply for account detail matching.

7. Transfer Between Master and Sub Accounts:

Brokers with master and sub-accounts can transfer positions between them.

Key Details: Requires identity confirmation and is processed during regular trading hours.

8. Depository Switch:

Permits changing the currency of multi-listed stocks at different depositories.

Key Details: Executed by selecting "Depository / Trading Currency Change" and following the procedure.

<https://www.ibkrguides.com/brokerportal/transferandpay/transpositions.htm>


# ACH Netwok

The direct deposit of payroll, social security benefits, and tax refunds are typical examples of ACH credit transfers.

ACH stands for Automated Clearing House. It's a nationwide network that facilitates electronic money transfers between bank accounts in the United States. Before ACH, financial transactions were primarily conducted via paper checks. ACH allows for secure and efficient movement of funds electronically, making payments faster and more convenient. It's used for various transactions, including direct deposit, bill payments, and business-to-business transfers. The network is managed by the National Automated Clearing House (Nacha), and the actual processing is handled by two operators: the Federal Reserve and The Clearing House.

COUNTERPARTIES

Originating Depository Financial Institution (ODFI): Financial institutions that originate transactions on your behalf. Plaid works with ODFIs to initiate these transactions.\
ACH Operators: The Federal Reserve and The Clearing House, which process, route, and settle transactions with member banks.\
Third-Party Sender (TPS): Payment processors, which initiate transfers for you since your organization might not have a direct agreement with the ODFI.\
ACH Originators: Entities directly responsible for pulling or sending funds to an end-customer.\
ACH Platforms: Entities that onboard originators of their own and facilitate money movement between them and the receivers.\
Receiver: Individuals or businesses receiving ACH transactions in their bank accounts

XCK Destroyed Check Entry


# EFT

COUNTERPARTIES

[Payments Canada](https://www.payments.ca/)

FLOW

1. Initiation: A business or individual triggers a transaction through online banking, mobile apps or point-of-sale terminals.
2. Authorization: Multifactor authentication secures the transaction through passwords, PINs or biometric verification.
3. Transmission: Secure networks route payment data between financial institutions via established channels like ACH or SWIFT.
4. Processing: Banks verify the transaction details and available funds.
5. Settlement: Funds move between accounts based on the chosen transfer method.
6. Confirmation: Systems generate unique transaction IDs or reference numbers for record-keeping and provide confirmation to the parties involved.




---

[Next Page](/llms-full.txt/1)

