# Announcement

### \[November 13, 2024]

### Notice Regarding the Removal of USDV and Conversion of USDV to USDC

Dear USDV Community,

This is to notify you that the Verified USD Foundation (the “Foundation”) has halted minting of new USDV. The Foundation will cease support for USDV on December 31, 2024. Please be assured that all USDV remain pegged 1:1 to the US Dollar by tokenized real world assets, which are 100% backed by cash and highly liquid cash equivalents (short-term treasury bills and overnight repos).

Users are encouraged to convert their USDV assets into other available assets as soon as possible. The existing Uniswap V3 USDV/USDC pool on the Arbitrum network linked [here](https://app.uniswap.org/explore/pools/arbitrum/0x536F4b1CbEDA8387A57b45A549ca6B250f7f1D90) is well capitalized and ensures that all USDV holders can exchange their tokens for USDC at a 1:1 ratio. Users holding USDV on other networks may bridge to Arbitrum using [Stargate](https://stargate.finance/).

Please note that Short Term Treasury Bill Token (“STBT”) is not impacted by this announcement and will remain active following the removal of USDV from circulation.

We thank you for your engagement as we continue to build the crypto ecosystem in a way that promotes transparency and long-term, sustainable growth. Should you have any queries, please reach out via direct message to <https://x.com/USDV_Money> for assistance.

Thank you for your support!

Verified USD Foundation


# USDV Overview

**Verified USD (USDV)** is the first stablecoin that rewards Verified Minters based on their contribution to the token's active circulation.

USDV is an omnichain fungible token currently available on Ethereum, BSC, Avalanche, Arbitrum, and Optimism.

## How USDV Works

USDV utilizes the [ColorTrace algorithm](/docs/concepts/coloring) to mark USDV tokens with a unique 'color' to identify who originally minted them and maintain that attribution as tokens circulate within the ecosystem.

**Verified Minters** earn yield by increasing the circulation of USDV in their color. As users interact with your contracts, more tokens of your color go into circulation. This increased circulation can increase the yield you receive.

Minters are incentivized to mint *and* circulate USDV, enhancing the liquidity and utility of the token in the broader blockchain landscape.

## Why use USDV?

USDV is the first stablecoin to fairly compensate ecosystem participants such as CeFi and DeFi protocols in proportion to the value they create.

* **Become a Minter:** Partners can [become a 'Verified Minter'](/docs/verified-minters/initial-kyc) with successful KYC, unlocking the right to mint USDV and access to real world yield.
* **Real World Yield Share:** The fungible token coloring algorithm [ColorTrace](/docs/concepts/coloring) enables transparent & fair yield sharing based on USDV circulation contributed by each 'Verified Minter'.
* **Always native:** ERC-20 compatible, USDV is built on the [Omnichain Fungible Token (OFT)](https://layerzero.network/developers) Standard, eliminating unofficial wrapped/bridged versions and liquidity fragmentation.
* **Next Level Transparency:** Full transparency from real time on-chain transaction tracking, reserve proofing to daily real world asset monitoring.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FfCAprfs2eKIkr5LUGO1E%2Fusdv-architecture-2.png?alt=media&amp;token=567b8dc6-7c7d-404c-8ea7-4e8d38546718" alt=""><figcaption><p>Verified Minters collect yield based on the quantity of USDV they minted.</p></figcaption></figure>

Bridging the best of CeFi and DeFi, USDV transcends borders, blockchains and operating hours.


# How Coloring Works

A complete guide to coloring in USDV.

## What is Coloring?

**Coloring** in USDV is a way of *tagging* or *marking* a token's metadata to identify which Verified Minter the token originates from. Think of it as a label or a signature. USDV utilizes the [ColorTrace algorithm](/docs/concepts/coloring) in order to accomplish this.&#x20;

Each Verified Minter is assigned a unique **Color ID**. This Color ID is stored in the token contract as a positive integer value.

### Key Concepts

1. **Verified Minter**: Only certain trusted entities, known as Verified Minters, can have and assign colors. These minters each have a unique color, referred to as their *Default Color*.
2. **Contract Addresses and Colors**: Each contract address (e.g., pools, pairs, wallets, vaults, etc.) can only hold USDV tokens of one color at a time.
3. **Coloring**: Verified Minters can [set the color](/docs/verified-minters/setting-default-color) of a contract or wallet address. Users may also change the color of tokens in a wallet with no direct impact on the amount of USDV in circulation, as it only changes the marking stored in the token's metadata.

## How USDV Recoloring Works

USDV changes colors based on one of two policies: *Default Color* or *Weight-based*.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FcDda3v8bTScZLN38WN7O%2Frecoloring.png?alt=media&amp;token=936246f8-750c-44f5-8c75-7255fc2a0fb7" alt=""><figcaption><p>If Default Color is set, all transfers are recolored to the Default Color. Otherwise, the higher quantity color is chosen.</p></figcaption></figure>

1. **By Default Color**: If a receiver account (like a pool or a wallet) has a **Default Color** set, any USDV tokens sent to that account will automatically be recolored to match that account's Default Color.

* **Example**: A pool with a Default Color of <mark style="color:blue;">**USDV\_BLUE**</mark> has <mark style="color:blue;">**$100 USDV\_BLUE**</mark>. It receives <mark style="color:red;">**$120 USDV\_RED**</mark>. The incoming <mark style="color:red;">**$120 USDV\_RED**</mark> is recolored to <mark style="color:blue;">**USDV\_BLUE**</mark>, making the pool’s final balance <mark style="color:blue;">**$220 USDV\_BLUE**</mark>.

2. **By Weight**: If the receiver account doesn’t have a **Default Color**, the color of the majority balance (heavier weight) determines the color. The smaller balance is recolored to match the larger one.

* **Example**: A pool has <mark style="color:blue;">**$100 USDV\_BLUE**</mark> and receives <mark style="color:red;">**$120 USDV\_RED**</mark>.&#x20;

  Since <mark style="color:red;">**$120 USDV\_RED**</mark> is greater than <mark style="color:blue;">**$100 USDV\_BLUE**</mark>, the pool's <mark style="color:blue;">**$100 USDV\_BLUE**</mark> is recolored to <mark style="color:red;">**USDV\_RED**</mark>, resulting in a final balance of <mark style="color:red;">**$220 USDV\_RED**</mark>.

## Other Coloring Properties

* **Fungible**: all USDV tokens are fully fungible, regardless of color. This allows users and DApps to transact using any  USDV tokens interchangeably regardless of the color.
* **Long-lived**: Tokens withdrawn from Liquidity Pools maintain their designated color until they undergo a recoloring. This characteristic allows protocols with high transaction volumes, such as decentralized exchanges (DEX), to better capture attribution. Here, users often deposit and withdraw tokens rapidly through liquidity provisions or swaps. The significance is that the colored USDV will persist in users' wallets until a recoloring action takes place, enabling minters to gain more attribution than the Total Value Locked (TVL) in their respective pools.

For full details please review the ColorTrace whitepaper.


# Yield & Peg Management

Fully backed by Tokenized Real World Assets

USDV is built upon tokenized Real World Assets (Tokenized RWA), which are 100% backed by cash and yield bearing, highly liquid, risk-free financial instruments (i.e repos, short term T-bills).

Only whitelisted tokenized assets are permitted to be underlying assets of USDV. All tokenized assets are stored in a [Vault](broken://pages/CTxCYXyaPf3C4dBm36PO) on Ethereum.

**STBT (Short-term Treasury Bill Token) is the first reserve asset underlying USDV.**

## STBT (Short-term Treasury Bill Token)

Exclusively designed for accredited investors, STBT follows ERC-1400 standards, allowing holders to tap into risk-free US T-bill yields. Yield is rebased to holders' STBT balances on a daily basis.

STBT is pegged 1:1 to USD, fully backed by the US dollar and US Treasury securities with maturities within 6 months and reverse repurchase agreements.

STBT is issued by Matrixdock, a digital asset platform that provides access to Real World Assets (RWA) through tokenization, a brand fully owned by Matrixport.

Website: <https://stbt.matrixdock.com/>

Proof of Reserve: [https://data.chain.link/ethereum/mainnet/reserves/stbt-](https://data.chain.link/ethereum/mainnet/reserves/stbt-por)

FAQ: <https://matrixdock.gitbook.io/matrixdock-docs/v/english/>

## Underlying Tokenized RWA is always pegged 1:1 to US Dollar

For underlying Tokenized RWA (here, STBT) to maintain 1:1 peg with US Dollar, its total supply is adjusted to the Net Asset Value (NAV) of the underlying portfolio on a **daily basis.** Yield is then rebased, excluding any negative interest days.

(Rebase is where supply is **algorithmically adjusted to peg the price**. In our case, this is the minting of new tokens to ensure constant 1:1 peg to US Dollar)

USDV's [Vault](broken://pages/CTxCYXyaPf3C4dBm36PO) holding all the tokenized RWA will also receive the rebase yield.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FtjaHY7yedkUhxPJSjCKx%2Fyield-peg.png?alt=media&amp;token=a5efc02f-605c-4060-8e15-06cf9868e8a4" alt=""><figcaption><p>Yield is proportionally shared between Verified Minters based on the circulation attribution calculated by ColorTrace.</p></figcaption></figure>

### Fair, transparent and equitable yield distribution

Countless CeFi, DeFi and businesses across geographies, blockchains and domains will contribute to USDV circulation and its growth.

Logically, **players contributing to a greater share of USDV circulation should be eligible to a larger share of the underlying yields.**

Given the unpredictable and permissionless nature of stablecoin flow, the difficult question is **how can we attribute USDV circulation precisely to each contributor to enable fair yield distribution?**&#x20;

This is enabled by [**ColorTrace**](/docs/concepts/coloring), a novel token coloring algorithm developed by LayerZero Labs, and a core feature supporting the USDV architecture.


# Security

Verified by reputable independent third party firms

**Audits**

[Paladin Audit Report - Oct 27th 2023](https://usdv.money/audit/paladin.pdf)

[Zellic Audit Report - Oct 26th 2023](https://usdv.money/audit/zellic.pdf)

[OtterSec Audit Report - Oct 13th 2023](https://usdv.money/audit/ottersec.pdf)&#x20;

**Risk Assessment**

[Chaos Labs Risk and Economic Security Assessment - Nov 9th 2023](https://usdv.money/doc/chaoslabs.pdf)


# FAQ

The most common questions asked about USDV.

## General

1. **What is USDV?**

Verified USD (USDV) is a stablecoin pegged 1:1 with the US Dollar, fully backed by STBT, which is backed by cash, overnight repo and short term treasuries.

Compatible with the ERC-20 standard, USDV is a native omnichain stablecoin integrated with LayerZero’s Omnichain Fungible Token (OFT) Standard.

USDV is powered by ColorTrace, a novel value attribution algorithm invented by LayerZero Labs, allowing community participants to receive rewards transparently and equitably for their contributions to the ecosystem.

2. **What gives USDV its value?**

USDV is backed by a reserve of high quality tokenized Real World Assets. Specifically, the initial reserve asset is Short-term Treasury Bill Tokens (STBT). This reserve backing gives USDV its value and pegs it to the US dollar.&#x20;

In the future, USDV will expand support for the inclusion of other high quality tokenized Real World Assets in underlying reserves.

3. **Who can buy and use USDV?**

USDV can be minted by approved entities called Minters through agreements with the issuing entity. Once purchased by Minters, USDV can circulate freely to anyone. There are no restrictions on who can hold or use USDV. For example, a user could swap ETH for USDV on a DEX.

4. **STBT backs USDV. What is STBT?**

STBT (Short-term Treasury Bill Token) is the first reserve asset underlying USDV.

Exclusively designed for accredited investors, STBT follows the ERC-1400 standard, allowing holders to tap into risk-free US T-bill yields. STBT is daily rebased to peg to 1 USD.

STBT pegged 1:1 USD (in NAV net-asset value), fully backed by the US dollar and US Treasury securities with maturities within six months and reverse repurchase agreements.

STBT is issued by Matrixdock, a digital asset platform that provides access to Real World Assets (RWA) through tokenization, a brand wholly owned by Matrixport.

5. **How does USDV handle large redemption requests?**

USDV is redeemed for STBT via smart contract; since STBT is on-chain, it is 100% transparent and can be redeemed regardless of the request size.

6. **What is being paid out as rewards to Verified Minters?**

Contributors are incentivized to mint as they receive a portion of the yield from the underlying asset of STBT. Mechanically, STBT is daily rebased to peg 1:1 to USD and additional STBT is daily generated as yield.

A portion of the STBT yield (converted into USDV) will be shared with Verified Minters as rewards for their contribution.

7. **How does the USDV circulation peg to the underlying rebasing assets?**

When the underlying assets, like STBT, rebase, the Vault’s balance increases. The protocol will then mint the same amount of new USDV, from which a portion of which will be allocated as verified minter rewards.

The amount of USDV in circulation will naturally increase at the rebasing rate of its underlying assets while keeping the peg to 1 US dollar.

8. **What is the difference between USDV and STBT?**

USDV is an omnichain native stablecoin backed by STBT.

STBT is backed by real-world assets of cash and US treasury securities. STBT rebases daily based on the yield earned on these underlying real-world assets; USDV does not rebase and is always pegged 1:1 with the US Dollar.

9. **Does USDV have a rebasing mechanism?**

USDV does not have a rebasing mechanism.

10. **Why was STBT chosen as the first reserve asset?**

STBT is fully backed and entirely transparent, utilizing Chainlinks Proof of Reserves. It is also verifiable on-chain with timely minting and redemption pathways and has also undergone rigorous checks and audits by reputable security firms.

STBT is 100% backed by US Dollars and short-term US treasury bills, including more than 90% of overnight repo and short-term T-bills with maturity of within six months. This enhanced stability and transparency reduces the risk associated with USDV.

11. **Where can users acquire or interact with USDV?**

Users can acquire or interact with USDV through various leading CeFi and DeFi platforms. For the list of partners please visit [USDV's official website.](https://usdv.money/)

12. **What is the process for minting and redeeming USDV?**

For minting USDV, the flow is as follows:

* Verified Minter X deposits STBT into the Vault Contract, which maintains the 1:1 peg of STBT and USDV.
* The specified receiver account will receive USDV\_X from the minting.
* USDV\_Z will be colored for reward allocation to Verified Minter X..

For redeeming USDV, the flow is as follows:

* STBT users can deposit USDV of any color (using USDV\_X as an example) to redeem.
* STBT will be unlocked. Redemption Fee will go to the Operator. The rest goes to the receiver.
* USDV\_X will be burned.

13. **How long does the minting/redemption process take?**

All minting and redemption processes are completed on-chain and typically take only one block.

14. **Where can a Minter Mint/Redeem USDV?**

Minter can operate Mint/Redeem applications in the following three places:

* The smart contract interface on the USDV website.
* USDV smart contract API.
* Partner platforms with interfaces for Mint/Redeem. (Our partner network will be continuously updated.)

## Legal and Regulatory

1. **Is USDV considered a security or regulated investment?**

USDV is **neither a security nor a regulated investment.**

USDV does not represent ownership, equity, or rights to profits/losses in any company or legal entity. Holding USDV does not make you a shareholder or give you voting rights in any entity. USDV is not issued for investment purposes or to pool funds for collective investment. It is issued as a means of exchange and to facilitate transactions.

Holders of USDV do not have any inherent contractual rights to redeem USDV from the issuing entity for assets or legal tender. Certain parties like "Minters" may have separate contractual redemption rights, but regular USDV holders have no such rights.

While USDV aims to maintain a stable value through asset backing, holding it does not entitle you to any underlying assets. The assets are owned solely by the issuing entity.

The issuing company does not promote or market USDV as an investment opportunity or security. The nature of USDV is a method of payment rather than an investment.

In summary, USDV lacks the traditional features and characteristics that qualify it as a security. It represents a medium of exchange rather than ownership or investment in any entity.

2. **What regulations apply to USDV?**

The issuing company is subject to British Virgin Islands anti-money laundering laws. USDV holders are responsible for their tax obligations and compliance with any regulations in their jurisdictions.

3. **Who manages USDV?**

USDV is owned and managed by the[ ](https://usdv.money/foundation)Verified USD Foundation, a non-profit organization committed to nurturing USDV’s global ecosystem of contributors, developers, and users.

4. **What is the Verified USD Foundation?**

The Verified USD foundation is a non-profit independent entity accountable for USDV, a community-based native omnichain stablecoin. It is dedicated to nurturing a progressive stablecoin ecosystem that enables equitable value sharing amongst its community of contributors.

The Foundation is also responsible for onboarding new contributors and establishing the roadmap and governance of USDV.

5. **To mint USDV, do you need to be KYC’ed?**

You do not need to be KYC'ed to mint USDV. However, to receive yield as a Verified Minter, you need to KYC.

6. **Who serves as the custodian for the reserve assets?**

USDV is an on-chain stablecoin backed by tokenized real-world assets such as STBT, which is also 100% transparent with real-time insights of transactions on Etherscan and PoR powered by Chainlink.

The STBT project offers 100% bankruptcy remoteness through its orphan SPV structure. STBT's underlying assets consist of US treasury securities under the custody of leading financial institutions.

7. **How does the rebasing mechanism function in regulating USDV’s value?**

USDV does not have a rebase mechanism. The underlying asset of STBT has a rebasing mechanism, a 1:1 peg with the US Dollar.

## Technology

1. **LayerZero uses an oracle and relayer model to move messages between blockchains. Which oracle and relayer are being used to enable USDV as an OFT?**

USDV uses LayerZero’s relayer and the Google Cloud Oracle to be enabled as an OFT.

2. **Which entities have the power to change the configuration of the LayerZero messaging (Oracle and Relayer)?**

The Verified USD Foundation is solely responsible for managing USDV and is the only entity that can change the configuration of LayerZero messaging.

3. **Can you elaborate on the technical mechanics that drive USDV?**

There are two key technical mechanisms driving USDV. 1) OFT and 2) ColorTrace.

**OFT:** USDV integrates with the OFT Standard for seamless operation across multiple blockchain networks. This omnichain functionality empowers USDV with extensive accessibility and versatility within the ever-evolving blockchain ecosystem.

**ColorTrace:** USDV’s integration of ColorTrace enables verified minters participating in USDV to receive equitable rewards for their contributions to the ecosystem. Similar to Bitcoin's UTXO structure, minters can mark USDV in their color, gaining the right to claim the rewards from their contributions to the USDV ecosystem without dispute.

4. **What problem is ColorTrace, and by extension USDV, designed to solve?**

It is designed to create an equitable stablecoin ecosystem through a fair rewards distribution system fostering an inclusive community-based approach to drive adoption and sustain growth.

5. **How about USDV?**

USDV aims to be a fast, secure, and transparent medium of exchange native to the Internet, solving problems inherent in the traditional banking ecosystem.

Through its native omnichain features, it avoids liquidity fragmentation across chains, increasing efficiency.

Further, through ColorTrace, USDV aims to address the inequitable distribution of underlying yield that currently exists with stablecoins. USDV enables yield sharing with those who contribute the most to the growth of USDV.

6. **In what ways does USDV offer a competitive edge over existing market options?**

USDVs unique attribution mechanism enables the fair distribution of underlying rewards to contributors, such as Verified Minters. Furthermore, by using LayerZero’s messaging layer and Omnichain Fungible Token OFT Standard, USDV can be moved seamlessly between multiple chains at launch, with the ability to expand this capability to any chain enabled by LayerZero Endpoints.

7. **How is interoperability achieved? Is USDV supported across multiple blockchain networks currently?**

USDV is built on LayerZero’s Omnichain Fungible Token Standard. At launch, USDV will be available on Ethereum, BNB, Avalanche, Arbitrum and Optimism. Given LayerZero’s novel technology, USDV can be expanded to any chain supported by LayerZero (40+ chains).

## Transparency

1. **What measures are in place to ensure the integrity and verification of USDV?**

USDV is an on-chain stablecoin; its open-sourced smart contracts have undergone third-party audits by Paladin, OtterSec & Zellic.io.

Transparency is enabled by its initial reserve asset, STBT, with Daily Proof-of-Reserve and real-time monitoring on Etherscan, powered by Chainlink, offering an immutable record of ownership.

2. **Can you describe the strategy for token supply management and reserve maintenance?**

The supply of USDV is not fixed and may change due to variations in the reserved asset, primarily influenced by the quantity of assets such as STBT held in reserve. Should new USDV be minted, the total supply could increase. Conversely, redemption activities may decrease the total supply.

\
Information on the current USDV total supply and reserved asset amounts can be accessed by browsing the following[ website](https://usdv.money/transparency).

## Community

1. **Who are your community contributors, and how are they involved?**

USDV’s Community consists of Operators, Liquidity Providers, and Verified Minters:

* **Operators:** Provide technology and security backing the USDV ecosystem and support the promotion and branding of USDV.
* **Liquidity Providers:** Bring stability and enable USDV to be distributed on demand.
* **Verified Minters:** Contribute to USDV adoption and growth of liquidity in the ecosystem.

If you have any other questions, please feel free to contact us at <support@usdv.money>


# Integrating USDV

As a **Verified Minter** in the USDV ecosystem, you not only have the opportunity to contribute to the stability and expansion of USDV, but also have the potential to obtain rewards by the tokens in circulation attributed to your minting activity.

## Why Become a Verified Minter?

* **Stability and Availability**: Your role in minting and circulating USDV directly influences its stability and utility across various blockchains.
* **Rewards for Active Circulation**: USDV rewards minters for having USDV of their color circulating in the market.
* **Strategic Advantage**: Being a Verified Minter allows you to share in yields proportional to the value you introduce into the ecosystem. Strategically position your application or protocol within the broader blockchain ecosystem to attract a broader audience to use USDV of your color.

## Maximizing Circulation and Rewards

USDV is an ERC-20 token and can be integrated with any ERC-20 compatible application. Maximize your rewards as a Verified Minter by integrating your colored tokens to popular DApps to increase circulation:

* **Integrate with DEXs**: Deploying USDV within DEX Pairs/Pools not only increases liquidity, but also exposes USDV to a broader trading audience that will use your token color.
* **Collateral and Borrowing Options**: Adding USDV as a collateral or borrowing option in lending protocols increases its utility while increasing your color's usage.
* **Expand Wallet Offerings**: All wallets that hold USDV in your color increase your color's circulation.

## Earning More Yield Through *Recoloring*

Part of any yields generated from USDV's underlying assets are shared with Verified Minters. Your yield earnings are directly tied to how effectively you circulate and recolor USDV:

* **Recoloring for Higher Yield**: The more USDV tokens are recolored under your color (through active circulation and TVL), the greater your share of the yield.
* **TVL and Volume Impact**: Applications with higher Total Value Locked (TVL) or transaction volume in USDV can potentially earn more yield. USDV aims to proportionally reward minters for contributing value to the USDV ecosystem.

See the next page to understand how you can [start the KYC process to become a Verified Minter](/docs/verified-minters/initial-kyc).


# Initial KYC

How to Begin the Initial KYC for Verified Minters

## **Ensuring Trust and Compliance in the USDV Ecosystem**

As part of our commitment to maintaining a secure, transparent, and compliant environment within the USDV ecosystem, undergoing a Know Your Customer (KYC) process is a mandatory initial step for all potential **Verified Minters**. This process is necessary for several reasons:

1. **Enhanced Security**: KYC verifies the identity of each minter, ensuring that the USDV network is free from malicious actors. This is necessary to protect the integrity and stability of USDV transactions.
2. **Regulatory Compliance**: Adhering to KYC regulations is essential for USDV to operate within the legal frameworks of various jurisdictions. This compliance helps in building trust with users, regulators, and partners.
3. **Maintaining Transparency**: KYC ensures that all participants in the USDV network are accountable and traceable, fostering a transparent and responsible blockchain ecosystem.

## **Starting the KYC Process**

USDV includes the following two privileged (KYC) roles in addition to regular users who can send and receive USDV:

<table><thead><tr><th width="165.33333333333331">Role</th><th width="297">Conditions</th><th>Functions</th></tr></thead><tbody><tr><td><strong>Verified Minter</strong></td><td><p>USDV KYC passed</p><p>Whitelisted &#x26; Color assigned<br></p></td><td><p>Transfer, Color, Mint, Redeem</p><p><br></p><p>Claim rewards</p></td></tr><tr><td><strong>Minter</strong></td><td><p>STBT KYC passed</p><p>Whitelisted, NO color assigned</p><p></p><p>(i.e STBT approved users)</p></td><td><p>Transfer, Color, Mint, Redeem</p><p><br></p><p>No Claim rewards function</p></td></tr></tbody></table>

To be granted *Verified Minter* status, the partner protocol must:

* Pass USDV KYC
* Get whitelisted by the USDV Operator
* Get assigned a unique color by the USDV Operator

Please contact the [**USDV Foundation**](mailto:undefined) to learn more about 'Verified Minter' registration.


# Minting USDV

The USDV Web App is designed to facilitate easy minting, coloring, crosschain transfer and monitoring of USDV. Refer to the links below for USDV Web App access.

Mainnet: [usdv.money](https://usdv.money/)\
Testnet: [test.usdv.money](https://test.usdv.money/)

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FHQ2bih77XkT5uSeF8K2y%2Fimage.png?alt=media&amp;token=e1cc6dc4-b5ac-44b3-99dd-9b4ebbfe4e55" alt=""><figcaption></figcaption></figure>

Click the ***Launch App*** button (upper right corner) to start.

You will be immediately redirected to the Web App's 'Mint' page. You must connect your whitelisted wallet for full access, otherwise you will only have default **‘Mint’** and **‘Redeem’** functions.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2Fp7iSGc3k3NV7nDoKun1T%2Fimage.png?alt=media&amp;token=ace26ee4-259b-4b23-bf0c-f9f02f6677b0" alt=""><figcaption></figcaption></figure>

Click **‘Connect’ (upper right corner)** to connect with your wallet. Choose the suitable app for your whitelisted wallet. Please ensure the browser extension for your chosen wallet has already been installed.<br>

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FZcfmifbtleD1wq5mOY2V%2Fimage.png?alt=media&amp;token=5b552872-b9e7-4672-84aa-ad6e0c0d9e01" alt=""><figcaption></figcaption></figure>

After successfully connecting to your whitelisted wallet, you will notice that **‘Coloring’** and **‘Transfer’** functions are unlocked.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FWkJf16iX9pIfZgOgQTKY%2Fimage.png?alt=media&amp;token=c61c2378-e3b7-4604-87cc-8b1db172ef30" alt=""><figcaption></figcaption></figure>

Back to the **'Mint'** page. You can mint USDV by supplying STBT. Enter the supply amount. Supply and mint are on a 1:1 basis.

## Set Color

An important feature of USDV is ColorTrace. Minters can mint their USDV in any of the circulating colors. If you are a ‘Verified Minter’, the default color will be your assigned color. Here, our default (and assigned) color is 14.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FUblbsORl3BZjYxR47D0A%2Fimage.png?alt=media&amp;token=f1f3d6f0-35b3-4060-8e6b-0574ae4a8e50" alt=""><figcaption></figcaption></figure>

Click on the pen icon to change your choice of color. Colors are recorded as unique positive integers. The number of colors is capped by the number of ‘Verified Minters’ in the USDV ecosystem.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2Fu2036VuPcLG4PMWhgNAf%2Fimage.png?alt=media&amp;token=573bb9e9-43d7-4586-922c-697f834f0efb" alt=""><figcaption></figcaption></figure>

Click the **‘Mint’** button to initiate the transaction. You will be asked to confirm the transaction in your wallet. Click **‘Confirm’** to proceed.

<figure><img src="https://lh7-us.googleusercontent.com/NDzHunQo3jbrv-7oNNbA0LYZ9rbYedVedfmweiLjyVSaPHFiffQfOE4mbB2FnoT4dvLfrBbYGHP1VoMod7Vnj3YDQ9CleAa68VX6RJbGSBJAn7R0oNKhp9mhYokjwlnV_i3QxoM9aa_Xrs8j2EBRa8s" alt=""><figcaption></figcaption></figure>

After successful confirmation, the transaction is submitted and USDV will be directly sent to your wallet.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2F6LZx257wxrbOAKOSySiy%2Fimage.png?alt=media&amp;token=b17c3b3b-c477-45b6-bfd9-f7dc6022a792" alt=""><figcaption></figcaption></figure>

## Import USDV to your wallet

After minting USDV, remember to import them to your wallet by clicking ‘Add USDV to Wallet’ so USDV is properly revealed in your wallet.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FgfcZltNOtcuNg21RnNmT%2Fimage.png?alt=media&amp;token=6c90d275-7615-46ef-9194-fb38e48b9e5c" alt=""><figcaption></figcaption></figure>

Confirm **‘Add Token’** on your wallet to complete USDV import.

<div data-full-width="true"><figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2Fw0hthYHYJZ1kCjrl5ePP%2Fimage.png?alt=media&amp;token=541a7706-bc41-4094-9c6d-52f6a7e37f2b" alt=""><figcaption></figcaption></figure></div>


# Monitoring & Reminting

Navigate to the **‘Coloring’** page. This page is structured into two main parts: 1) Monitoring and 2) Reminting.

## 1) Monitoring

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FYahB240QsW54f3ot75as%2Fimage.png?alt=media&amp;token=63f049ab-0249-4017-9e44-d10f26965226" alt=""><figcaption></figcaption></figure>

### Vault Shareholding

In the example, the Verified Minter owns **color 16**.&#x20;

Here you can see the Verified Minter’s USDV contract address, as well as their Vault shareholding. Vault Share is calculated as the number of USDV under Verified Minter's color as a percentage of all circulating USDV. As the Vault Share increases, the corresponding Verified Minter is eligible to collect greater yield.

### Unclaimed Reward

Tokenized RWA yield is accrued and rebased daily, then immediately converted into USDV rewards to be claimed by Verified Minters.

Verified Minters can claim rewards attributed to their color any time by clicking the ‘Claim Reward’ button. See [**Claiming Rewards**](/docs/verified-minters/claim-rewards) for more information.

### Reward Per Day

Reward Per Day is calculated based on the Verified Minter's current minted USDV amount and 7-day average APR of underlying tokenized RWA. This figure is an estimate and may differ from the actual amount distributed.

### Colored and Minted USDV

A bar chart comparing quantities of Colored USDV and Minted USDV owned by the Verified Minter.&#x20;

Note that rewards are calculated based on **minted USDV**. In the above graphic, Verified Minter 16 has the potential to capture greater yields by realizing the remint opportunity on positive [delta](/docs/concepts/delta).

## 2) Reminting

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2F8U8VLGHIoOks4zsRXEdE%2Fimage.png?alt=media&amp;token=d7743194-18ee-452c-b355-85e0c0387a0b" alt=""><figcaption></figcaption></figure>

**Part (2)** reveals the balance of colored and minted USDV under Verified Minter’s color across different chains.

In the case when Colored > Minted, also defined as Delta Positive, the Verified Minter may remint to capture greater yield. For more details on how it works, see [Delta](/docs/concepts/delta).

See the above example of Verified Minter 16,&#x20;

* There is $600 USDV colored 16 on Goerli, but only $200 minted USDV
* This presents a Positive Delta of +$400 and the possibility to remint, as confirmed by the activation of the 'Remint' button.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2F6zbUVaBfRV8FvxxhdP6s%2Fimage.png?alt=media&amp;token=961eb831-acc5-4156-ac8f-89c430b9f891" alt=""><figcaption></figcaption></figure>

After clicking 'Remint', the Verified Minter can adjust how much to remint by deciding on specific percentage allocations. Here we set 'Remint' percentage to 75% (remint $300). Click **‘Remint’** to initiate the transaction.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FwesFbfm0i9ZfP5BjIQJP%2Fimage.png?alt=media&amp;token=20cb6d61-df61-4ffe-8d62-e66be3d77257" alt=""><figcaption></figcaption></figure>

If **‘Remint’** is executed on Ethereum, the transaction is directly processed and submitted. If **‘Remint’** is executed on any other chain (non Ethereum), there will be extra time required for cross chain message delivery before **‘Remint’** success.

After this transaction, Verified Minter has $500 minted USDV and will earn more rewards without any additional STBT->USDV minting.


# Moving USDV Crosschain

You can move USDV between chains on the Transfer page. Currently we only support native transfers (i.e USDV<>USDV).

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FKrDLbQ7hRARdOTTMvJ8z%2Fimage.png?alt=media&amp;token=2a67d9c2-8b14-4c66-a348-e8137992689f" alt=""><figcaption></figcaption></figure>

Begin by selecting source and destination chains. Enter the amount of USDV for transfer. Please ensure you have native gas tokens to facilitate the transfer.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2F9fJnwByWLY6iINodZFLw%2Fimage.png?alt=media&amp;token=8ba66b87-4cad-43d6-b082-54c7017f9ee8" alt=""><figcaption></figcaption></figure>

## Custom Destination

By default, the destination address will be your current wallet address. To send USDV to a custom destination address, click **Destination Address** (pen icon on right) and provide the custom destination address.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2F5XHB0o5TVz6ktKVfCHbd%2Fimage.png?alt=media&amp;token=513450c0-db90-4171-917d-fff5f3b434d0" alt=""><figcaption></figcaption></figure>

## Airdropping Gas Tokens

You can also leverage the gas airdrop feature by clicking **‘Gas on Destination’** (pen icon on the right) and allocating gas token allowance. This button shows only after a destination chain has been selected.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FRibWCY5RRssbC2O1R57Y%2Fimage.png?alt=media&amp;token=e6ca71c6-2c27-4cd9-b713-fd091eb6440d" alt=""><figcaption></figcaption></figure>

Click **‘Transfer’** to initiate the transaction and complete by signing the transaction in your wallet.

<figure><img src="https://lh7-us.googleusercontent.com/tDurXkrVJFd6D4l9GuxKH1rhNcTrUa0JJmtWFjUrHP3KRe97XdLs0MmLDsWSBnPzIYESATT3nQXSRzLQqydLB0NHF0lw9JVw43bj_vEuqDQVjzFpvdjXkcba2VvN2mg_i9BxKB4q0wNH7YcUExCd9ik" alt=""><figcaption></figcaption></figure>


# Claiming Rewards

Only Verified Minters’ are eligible to claim rewards.&#x20;

In this example, we are ‘Verified Minter’ with color 14 and there is 4.90 USDV of unclaimed reward.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2F8dlEP6LcsBAtBpoSb6D5%2Fimage.png?alt=media&amp;token=982c60cc-1d72-4d5a-b106-2eea48de9c26" alt=""><figcaption></figcaption></figure>

After clicking on **‘Claim Rewards’**, you will be directed to your wallet. Click '**Confirm**' to complete the transaction.

<figure><img src="https://lh7-us.googleusercontent.com/4EIpVpymfZYP1V08-9qydCCexuRP72MBhnx4iTELiY_e9hLKmGxJsKMHMuH6MJzoefbFKIGV-P0IHrFinjLm1aPj6HSNQYWWMmozzVke-1y80XIfPSoNDSzBnc4dgpUhfSE8pJ2hlcDQz1zoMa0jHrs" alt=""><figcaption></figcaption></figure>


# Redeeming STBT

Navigate to the **‘Redeem’** page to convert USDV back to STBT.&#x20;

By default, the **‘Redeem’** function is only available on Ethereum because STBT is only available on Ethereum.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FQ3D72lpUU5kTLbRcTSLj%2Fimage.png?alt=media&amp;token=5df3c601-72ee-41bd-93f8-00f84af0fe77" alt=""><figcaption></figcaption></figure>

Currently, there is no cross-chain option. To convert any USDV on non-Ethereum chains, you must first transfer non-Ethereum USDV back to Ethereum.&#x20;

Refer to [**Moving USDV Crosschain**](/docs/verified-minters/cross-chain-transfer) for more details.

\ <br>


# Account Settings

You can enter the **‘My Account’** page by clicking the avatar in the top right corner of the website. Here you can browse all historical transactions (including but not limited to transfers, minting, coloring etc).

<figure><img src="https://lh7-us.googleusercontent.com/pdiilEkkNPv1bo86wpmHwQQ-CDlTT5UtRryXvjPrGfRK-Aj9ccK05dn-r3FucpPfbXYylzW4bfYvRFDk0VG72ooT-r0l0HvFfIIzGb1mE0Fneq-iCOHhDxtDRRJyPyDjcq0VUzt5gPa3z82QuKBf6Jo" alt=""><figcaption></figcaption></figure>

## Set Account Color

In the lower right section of the Account Page, you can set your individual wallet colors by chain. By default, the account color for all chains are set to zero. This is wallet specific and is different from the ‘Verified Minter’ assigned color. In the example below, we have already set wallet\@Goerli to 14.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2F3jaOyijHWyAtlzbeJgXX%2Fimage.png?alt=media&amp;token=b97479dd-5885-4ddc-a716-b84742ba5c40" alt=""><figcaption></figcaption></figure>

Click the **‘Edit’** button to set a new color. You can set your wallet to any available color (e.g., from 14 to 7). Click **‘Set Color’** to initiate the transaction for sign-off.

<figure><img src="https://lh7-us.googleusercontent.com/0ON_kQsRaAlaREhP2QPNtVTAnnKkgxSMlDpWH3LE1Gc3wiMLWdcRT6RdpGwxDuGRqqoBgoR4kzveWqcSTpjCIl7BViygjXIk5tx-EoDPoPtynDBsTYO2izPlAJKrJ_93rrOx4qqSyHq2mcKZJnBmMh4" alt=""><figcaption></figcaption></figure>


# Setting Default Color

Every Verified Minter has the right to set the Default Color of contract addresses (i.e pools) by configuring directly on blockchain explorers.

Take an example of Verified Minter 1 setting Default Color by using the [**USDV contract on Arbitrum.**](https://arbiscan.io/address/0x323665443cef804a3b5206103304bd4872ea4253)&#x20;

First, go to Arbiscan (Arbitrum Blockchain Explorer) and search for the designated contract address. Click '**Contract**', then click '**Write as Proxy**'.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2F26zHFAw3BHityelYJaYd%2Fimage.png?alt=media&amp;token=208d691c-e5a8-4868-b349-a8bedf6a0d94" alt=""><figcaption></figcaption></figure>

Click **'Connect to Web3'** and connect to your wallet. Use the whitelisted wallet approved by KYC.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FMZengeijoJme63LrZA78%2Fimage.png?alt=media&amp;token=ac2c45ca-427e-4601-a4a9-212b8dc1d685" alt=""><figcaption></figcaption></figure>

## Set Colorer

First time Verified Minters must assign an address as the contract's Colorer. Click **'Write'** to confirm. This is for coloring EOA and does not apply for smart contract addresses.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FpWHrKtyJGkm8lwAPbFdo%2Fimage.png?alt=media&amp;token=9498eff5-289f-4d8f-9d62-9d46eedc71e8" alt=""><figcaption></figcaption></figure>

## Set Default Color

The Colorer may now configure and set Default Color for this contract address. Here, we assign the value 1, which is our Verified Minter's unique Color ID. This operation is limited to EOA only.&#x20;

To set Default Color of smart contracts, please contact the Operator.&#x20;

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FP8Ha3gYWNiPovUjpwqrr%2Fimage.png?alt=media&amp;token=3f75d711-09f7-47e8-8e82-51c4834bbbd1" alt=""><figcaption></figcaption></figure>

## Confirm setting

You should confirm the correct contract color settings by reviewing userStates.&#x20;

First, click **'Read as Proxy'**.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FYiHQyCjF7sQTMSENivZ3%2Fimage.png?alt=media&amp;token=060e6dda-bcac-4e86-9b05-88ecfee6e24a" alt=""><figcaption></figcaption></figure>

Check userStates by querying our Verified Minter address. Confirm defaultColor value (here, it is correct as it equals 1).

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FY8cboC2KEZcArPpyTKl6%2Fimage.png?alt=media&amp;token=dd534079-8135-43a6-a9c7-b507c06b74b0" alt=""><figcaption></figcaption></figure>

Verified Minters may appoint the USDV Operator to set Default Color on their behalf.


# Delegating Viewers

Verified Minters may choose to delegate viewing to other addresses, granting them access to all the app features (i.e Coloring and Transfer) previously accessible to only the Verified Minter.

Delegated addresses can monitor, color and transfer USDV on Verified Minter's behalf.

First, visit the [**ViewDelegate contract on Etherscan**](https://etherscan.io/address/0x7da4b01D014a02d92637bD27118f7da3b3DAaA17)**.** Click **'Contract'** then **'Write Contract'**.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2Fyv8qUkaJ5bSZYrIcEmtF%2Fimage.png?alt=media&amp;token=13814c0b-349a-424e-8f90-68238dd39f0e" alt=""><figcaption></figcaption></figure>

Click **'Connect to Web3'** and connect to your wallet. Make sure this is the whitelisted wallet approved by KYC (Verified Minter).

## Add Delegate

Verified Minters can delegate viewing to any address provided it is under their own unique color ID.&#x20;

In the case that the Color ID requested is different from the one owned by the connected Verified Minter wallet, the request for delegation will be rejected.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FozKejwba2dvUPDo79IhJ%2Fimage.png?alt=media&amp;token=ee3b8b0b-95f9-44d5-9338-6b74682258bb" alt=""><figcaption></figcaption></figure>

## Remove Delegate

Verified Minters may remove delegated addresses following a similar process, by providing Verified Minter's unique color ID and the delegated address.&#x20;

**Note: It is the Verified Minter's responsibility to maintain a record of all delegated addresses to ensure traceability and that the right users are granted viewing access.**

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2Fq2Sg87m4J86rW4LhKmCC%2Fimage.png?alt=media&amp;token=fdb4390f-7c97-468a-9708-5f24b28ec07b" alt=""><figcaption></figcaption></figure>


# Minter Widget

The Minter Widget is a frontend tool to facilitate minting USDV with alternative stablecoins (e.g., USDC, USDT, DAI), providing flexibility for minters who support these alternatives.

A Verified Minter can configure the Minter Widget with its registered color to enforce that all newly minted USDV through this widget be colored accordingly.

The Minter Widget supports [Minter.sol](https://docs.usdv.money/docs/app-integrations/pages/awT44vPij95sXkT9p4Bs#default-minter.sol) (via MinterProxy) on Ethereum and [BridgeRecolor.sol](https://docs.usdv.money/docs/app-integrations/pages/fxV9o8rnpCPrO5p8c96n#default-bridgerecolor.sol) on Sidechains.

## Architecture (Ethereum)

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FBjQePDtgTTUwtled5sAf%2Fminter-widget.png?alt=media&amp;token=59786416-8b01-4d6b-8b28-abe3c31be020" alt=""><figcaption><p>The minter widget allows users to easily interact with minter contracts. For security, users should only ever interact with the Minter proxy contract, which routes their mint requests to the correct Minter contract.</p></figcaption></figure>

### Deploy Minter Widget

Here is an example of how to deploy a minter widget on your website with the React framework.

1. Add `@usdv/usdv-widget` to the dependencies of your package.

```
yarn add @usdv/usdv-widget
```

or

<pre><code><strong> npm install @usdv/usdv-widget
</strong></code></pre>

2. In your page file

```
import {bootstrapWidget} from '@usdv/usdv-widget';

bootstrapWidget({color: YOUR_COLOR_NUMBER});
```

3. Declare elements in html or jsx file. `usdv-tracker`、`usdv-bridge`、`usdv-mint` and `usdv-widget` are custom HTML elements. `usdv-tracker` is used for displaying transaction status, `usdv-bridge` is used for transferring across chains, and `usdv-mint` is used for minting. `usdv-widget` is a combination of the above three elements.

```
<!-- DO NOT USE SELF CLOSING TAGS -->
<div class="center">
    <usdv-widget style="padding:20px"></usdv-widget>
</div>
```

or if you only want mint feature with transaction tracker, you can use it like this:

```
<!-- DO NOT USE SELF CLOSING TAGS -->
<div class="center">
    <usdv-tracker style="width:468px;margin-bottom:10px"></usdv-tracker>
    <usdv-mint style="background-color:white;border-radius:16px;padding:20px"></usdv-mint>
</div>
```

4. You can customize the theme.

```
import {bootstrapWidget, themes} from '@usdv/usdv-widget';
bootstrapWidget({color: YOUR_COLOR_NUMBER, theme: themes.dark});
```

5. Switch to testnet

```
bootstrapWidget({color: YOUR_COLOR_NUMBER, isTestnet: true});
```

6. Enable minting in side chain

```
// for testnet
bootstrapWidget({
    color: YOUR_COLOR_NUMBER,
    isTestnet: true,
    bridgeRecolorConfig: [
      {
        address: YOUR_BRIDGE_RECOLOR_ADDRESS,
        chainKey: 'fuji',
      },
      {
        address: YOUR_BRIDGE_RECOLOR_ADDRESS,
        chainKey: 'arbitrum-goerli',
      },
      {
        address: YOUR_BRIDGE_RECOLOR_ADDRESS,
        chainKey: 'bsc-testnet',
      },
      {
        address: YOUR_BRIDGE_RECOLOR_ADDRESS,
        chainKey: 'optimism-goerli',
      },
    ],
});

// for mainnet
bootstrapWidget({
    color: YOUR_COLOR_NUMBER,
    bridgeRecolorConfig: [
     {
       address: YOUR_BRIDGE_RECOLOR_ADDRESS,
       chainKey: 'avalanche',
     },
     {
       address: YOUR_BRIDGE_RECOLOR_ADDRESS,
       chainKey: 'arbitrum',
     },
     {
       address: YOUR_BRIDGE_RECOLOR_ADDRESS,
       chainKey: 'bsc',
     },
     {
       address: YOUR_BRIDGE_RECOLOR_ADDRESS,
       chainKey: 'optimism',
     },
   ],
});
```

### Request Mint

This is the interface to mint USDV :

```
    function mint(
        address _token, // must be whitelisted assets like STBT
        address _receiver, // receiver of the minted USDV
        uint64 _usdvAmount, // target USDV amount to mint
        uint32 _color, // color of the USDV
        bytes32 _memo // a reserved field to record meaning extra data for mint
    ) public {}
```

The Minter Widget can also provide a minting memo for this minting action for extensibility, such as keeping record or external attributions.


# On Ethereum

Swap stablecoins into USDV via EthereumLP

To integrate with [EthereumLP](https://etherscan.io/address/0x3986D5C53cE965EA16EF66845AB56A9DdE9Cd210#code), your application must:

* Complete color KYC
* Deploy contract, either:
  * [Default](#default-minter.sol), which will be deployed by the Operator, OR&#x20;
  * Custom Minter Contract implementation [interface](#interface-for-custom-implementation) and provide code hash and contract address to the Operator
* After above, the contract will be:
  * STBT whitelisted
  * Registered to MinterProxy

### Default: [Minter.sol](https://etherscan.io/address/0x82832EcD112D466D97BE259c35B8A19FeE56b7B8#code)

Minter can configure:

* Supported tokens (e.g. USDV).
* Blacklisted callers.
* Reward to user bps: The proportion, if any, of the LP contract reward to distribute to users. For example, if the reward bps from LP is 5bps, and you want to share 1 bps with users, the configuration would be 2000.

### Interface for Custom Implementation

```
import {MessagingFee} from "@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol";

interface IMinter {
    struct SwapParam {
        address fromToken;
        uint fromTokenAmount;
        uint64 minUSDVOut;
    }

    function swapToUSDV(
        address _sender,
        address _toSTBTLp,
        SwapParam calldata _param,
        address _usdvReceiver
    ) external returns (uint usdvOut);

    function swapToUSDVAndSend(
        address _sender,
        address _toSTBTLp,
        SwapParam calldata _param,
        bytes32 _usdvReceiver,
        uint32 _dstEid,
        bytes calldata _extraOptions,
        MessagingFee calldata _msgFee,
        address payable _refundAddress
    ) external payable returns (uint usdvOut);

    function getSwapToUSDVAmountOut(
        address _toSTBTLp,
        address _fromToken,
        uint _fromTokenAmount
    ) external view returns (uint usdvOut);

    function getSwapToUSDVAmountOutVerbose(
        address _toSTBTLp,
        address _fromToken,
        uint _fromTokenAmount
    ) external view returns (uint usdvOut, uint fee, uint reward);

    function getSupportedFromTokens(address _lp) external view returns (address[] memory tokens);

    function color() external view returns (uint32);

    function minterProxy() external view returns (address);
}

```


# On Sidechain

Swap stablecoins into USDV via SidechainLP

To integrate with SidechainLP, App will need to:

* Complete color KYC.
* Deploy contract, either:
  * [Default](#default-bridgerecolor.sol), which will be deployed by the Operator, OR&#x20;
  * Custom Minter Contract implementation and provide address to Operator (to be compatible with the [Widget](/docs/app-integrations/minter-widget), make sure it matches the interface of BridgeRecolor.sol).
* After above, the contract will be:
  * Whitelisted on SidechainLP.

### Default: [BridgeRecolor.sol](https://bscscan.com/address/0x5B1d0467BED2e8Bd67c16cE8bCB22a195ae76870#code)

The BridgeRecolor contract is an example implementation for Minters to provide a way for their users to swap stablecoins into USDV via SidechainLPs, facilitated by the [RecolorHelper.sol](/docs/app-integrations/on-sidechain/recolor-helper). The BridgeRecolor allows Minter to over incentivize their users.

Minter can configure:

* User reward bps: if the user reward bps is set higher than the reward received from SidechainLP, USDV stored on the contract will be used to subsidize the difference.
* Tolerance bps: a safeguard to prevent rewarding users more than reward than received from the LP.

Please visit [Contract Addresses](/docs/technical-reference/mainnet#contract-addresses) for SidechainLP.sol addresses on each chain.


# Recolor Helper

The Recolor Helper is a generic helper contract we deploy on each USDV-supported chain to facilitate recoloring operations. This contract is **immutable and unowned** for long-term security.  &#x20;

* The Recolor Helper contracts support both local ERC20 and crosschain transfers. All transfers output USDV colored based on the \_toColor argument.
* EOA or contracts can interact with the Recolor Helper in the following ways:
  * Direct transfer USDV into the helper and send out **atomically.**&#x20;
  * ERC20 approved transfer.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FfppXuYhe2tPHH9TvjLYU%2Frecolor-helper.png?alt=media&amp;token=1d840fb3-d9b9-4cbc-9946-c7036f80731c" alt=""><figcaption><p>The Recolor Helper is an immutable and unowned contract that enforces USDV recoloring rules.</p></figcaption></figure>

```
interface IRecolorHelper {
    /// ------ local transfer function -----

    /// @dev send USDV into this account and then ATOMICALLY transfer out with color
    function transferWithColor(address _receiver, uint256 _amount, uint32 _toColor) external;

    /// @dev it requires the caller to approve this contract to spend their USDV
    function approvedTransferWithColor(address _receiver, uint256 _amount, uint32 _toColor) external;

    /// ------ crosschain transfer function transfer function -----

    /// @dev send USDV into this account and then ATOMICALLY send across-chain
    function sendWithColor(
        IOFT.SendParam calldata _param,
        uint32 _toColor,
        bytes calldata _extraOptions,
        MessagingFee calldata _msgFee,
        address payable _refundAddress,
        bytes calldata _composeMsg
    ) external payable returns (MessagingReceipt memory);

    /// @dev it requires the caller to approve this contract to spend their USDV
    function approvedSendWithColor(
        IOFT.SendParam calldata _param,
        uint32 _toColor,
        bytes calldata _extraOptions,
        MessagingFee calldata _msgFee,
        address payable _refundAddress,
        bytes calldata _composeMsg
    ) external payable returns (MessagingReceipt memory);
}
```

Example usage:

* Swap aggregator: send the swap output to the Recolor Helper and call transferWithColor with your color
* Bridge: have the EOA approve the Recolor Helper and send your color of USDV crosschain.

Please visit [Contract Addresses](/docs/technical-reference/mainnet#contract-addresses) for RecolorHelper.sol addresses on each chain.


# USDV Architecture

## Overview

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FABg8mJSFqpVZiBBJiPtn%2Farchitecture.png?alt=media&amp;token=a0f23da7-e20d-4c22-b583-efa7d712acd8" alt=""><figcaption><p>USDV contract interactions.</p></figcaption></figure>

* Verified Minter Contracts can mint USDV using STBT as collateral.
* Token contracts on any USDV-enabled blockchain can send [remint](/docs/concepts/remint) requests to the vault to atomically burn-and-swap USDV from one color to another.&#x20;
* Tokens are freely transferred between wallets within or between blockchains.

## Vault

All tokenized assets and generated yields are stored in a globally unique **Vault** on **Ethereum**, the most secure and decentralized L1 chain on the market.

The Vault **issues, tracks, and updates** the *mint* of each color. The mint of each color is the sum of circulation for a given color across all chains.&#x20;

This mint is used to calculate the contribution of a given color to the global circulation across all blockchains, which is used to calculate yield shares.&#x20;

After USDV is minted in the Vault, it is atomically transferred to the Minter’s wallet on the primary chain, from where it can be transferred to other chains or wallets.

## USDV

USDV contracts are compatible with the widely adopted token standards (e.g. ERC20 on EVM) with administrative features for compliance requirements. It will also include signature-based permit (EIP2612) interfaces on EVM chains.&#x20;

USDV is deployed omnichain, and each USDV contract deployment manages local chain coloring state. The coloring information is used to implement reminting.

Learn more about contract roles & functions at [**Contract Governance**](/docs/technical-reference/contract-governance).

### Crosschain

USDV is built on the omnichain messaging protocol LayerZero; we chose LayerZero due to its superior immutable security, permissionless design, and censorship resistance.

## Minter

A Minter Contract is deployed for each (new) Verified Minter, and facilitates the coloring of tokens, minting using alternative stablecoins, blacklisting/whitelisting, and more.&#x20;

For easy integration, please refer to [**Minter Widget**](/docs/app-integrations/minter-widget).


# Mint

Mint is defined as the **direct conversion of a whitelisted tokenized RWA into USDV.**&#x20;

Impact on USDV circulation: **Increase (+)**

The tokenized asset (STBT) is locked up in the Vault, and the Vault issues a corresponding quantity of USDV. The minted USDV is colored based on the USDV coloring policy (See [How Coloring Works](/docs/what-is-usdv/how-coloring-works)).

## USDV Market Making

Tokenized RWA such as STBT may not be as readily and widely available vs mainstream stables (USDC/USDT/DAI), limiting USDV access.

To solve this problem, USDV has partnered with external market makers to allow conversion of mainstream stables to USDV directly.&#x20;

Market making contracts have been set up as below:

1. Ethereum: USDC, USDT, DAI
2. BSC: USDC, USDT
3. Avalanche: USDC, USDT
4. Arbitrum: USDC, USDT
5. Optimism: USDC, USDT

LP contracts are also available to facilitate stable -> USDV swaps.

Read more in the [Liquidity Provision](/docs/technical-reference/liquidity-provision) section.


# ColorTrace Algorithm

The ColorTrace Algorithm tags each USDV with a color and safely tracks/synchronizes the corresponding yield shares in the Vault. This page describes several features of ColorTrace ([whitepaper](https://layerzero.network/publications/ColorTrace.pdf)).

ColorTrace is a novel algorithm that implements efficient tagging of tokens with color attributes to enable the fair allocation of yield sharing.

## Token and Wallet Properties

Every USDV token is marked with exactly one color, and each address holds tokens of up to one color. This allows ColorTrace to color tokens efficiently (constant space complexity) and with deterministic gas usage.

Tokens are **fungible**, allowing DeFi applications and users to use USDV tokens interchangeably regardless of color.

Token colors are **long-lived**, meaning tokens withdrawn from DeFi pools will maintain the pool's color until a different application or Verified Minter acquires and recolors them.

Tokens are [**recolored**](#recoloring) as they flow through contracts or wallets owned by Verified Minters.

## Attribution

The ColorTrace algorithm tracks, in the vault, how many tokens of each color have been minted and the total supply of tokens across all colors. This data is used to fairly calculate proportional yield sharing.

As tokens are recolored, these changes in colored circulation are captured in [**Delta**](/docs/concepts/delta)**,** where a negative delta (deficit) implies a decrease in a color's circulation and a positive delta (surplus) implies an increase in the corresponding color's circulation.

Updates to the attribution data in the vault are made by calling [remint](/docs/concepts/remint), which atomically burns tokens of a color that has lost circulation and mints tokens of a color that has gained circulation. Reminting is made fair and safe by delta and the delta-zero invariant (See [ColorTrace Safety](/docs/concepts/global-invariants)).


# ColorTrace Safety

Safety in ColorTrace is guaranteed by several *invariants* shown below. For more details and a formal analysis of safety, please read the [whitepaper](https://layerzero.network/publications/ColorTrace.pdf).

### Asset-Circulation Equivalence

The global supply of USDV is never increased or decreased other than by the Vault.

### Delta-Zero Invariant&#x20;

Delta-Zero: sum of delta of all colors on any chain or combination of chains is **zero**. The entire ColorTrace deployment is delta-zero, which guarantees vault share calculation is fair, precise, and accurate.

### Eventual Finality

Every operation in ColorTrace will eventually be reflected in the state of the system. However, some operations may have some latency for crosschain communication.

### Mint-holding preservation

A minter that has minted their TVL at the vault will ***never*** have their vault shares reduced below their TVL.


# Delta

Delta is the difference, for each color, between the current supply of USDV and the quantity of USDV originally minted. For example, if USDV\_BLUE started with $100 tokens minted, but $50 were *recolored* to USDV\_RED, Delta\_USDV\_BLUE= -50 and Delta\_USDV\_RED = +50.

Delta can also be thought of as *yield potential*, or how much the current vault shares of a given color may change in the near future. A **positive delta** (surplus) means there exists potential yield that is not being collected. A **negative delta** (deficit) means there is the potential for yield reduction.

Delta is calculated separately for every color on every blockchain. Verified Minters choose when to remint based on their color's delta value on each blockchain.

## Volume vs TVL

A Verified Minter's delta can ***never*** fall below its TVL (See [ColorTrace Safety](/docs/concepts/global-invariants) mint-holding guarantee). However, a Verified Minter can gain vault shares beyond its TVL by recoloring USDV that flows through its contracts (See [Remint](/docs/concepts/remint)).


# Remint

Remint is a one-step function for the **burning-and-minting of existing USDV,** resulting with USDV in your color which was originally minted by another Verified Minter. Verified Minters use this function to increase their vault share without having to lock any new assets (i.e., recycling existing USDV).

Remint **does not** change the total circulation of USDV.

Remint can be called by the Verified Minter if their color's [delta](/docs/concepts/delta) is positive on any blockchain.

<figure><img src="https://2748992917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F60HQBir8zL677R7V1bjd%2Fuploads%2FTyUJbeCl2RBZioVT5mln%2Fremint.png?alt=media&amp;token=a0fa6dd9-d29c-4f6c-b007-b9e766dee4d1" alt=""><figcaption><p>Reminting is a convenient one-step operation for applications to burn other colored USDV and mint it in the application's color.</p></figcaption></figure>

The above example shows how Verified Minters can leverage high volume low TVL applications such as pools to gain additional vault shares.

1. A $100 balance starts initially as <mark style="color:red;">**USDV\_RED**</mark>
2. By chance, this balance passes through a pool with Default Color <mark style="color:blue;">**USDV\_BLUE**</mark>.
3. The pool (USDV Pool) recolors $100 <mark style="color:red;">**USDV\_RED**</mark> to $100 <mark style="color:blue;">**USDV\_BLUE**</mark>.
4. The owner (Verified Minter) of <mark style="color:blue;">**USDV\_BLUE**</mark> calls Remint on the <mark style="color:blue;">**USDV\_BLUE**</mark> delta of +$100
5. <mark style="color:blue;">**USDV\_BLUE**</mark> gains $100 additional vault share, and some other color that was recolored (e.g., <mark style="color:red;">**USDV\_RED**</mark>) loses $100 vault share.

A reminting fee is applicable. See [Fees](/docs/concepts/parameters) for more details.


# Redemption

Redemption is defined as the destruction of USDV to redeem underlying tokenized RWA.

Impact on USDV circulation: **Reduce (-)**

By destroying USDV, the underlying asset is unlocked from the Vault. USDV of any color can be used for redemption.&#x20;

Redemption occurs in a single atomic transaction as follows:

* A user deposits $K USDV of any color (e.g., <mark style="color:blue;">**USDV\_BLUE**</mark>) to redeem.
* $K STBT is unlocked. A Redemption Fee is deducted from the unlocked STBT, and the remaining balance is sent to the receiver.
* $K Vault Shares are removed from <mark style="color:blue;">**USDV\_BLUE**</mark>.

Redemption is currently exclusive to the Ethereum network, and only STBT is available for redemption.

Redemption fee is applicable. See [Fees](/docs/concepts/parameters) for more details.


# Fees

## Operator handling fees

* Every redemption will incur a 10bps fee.
* Every remint will incur a 3bps fee to the Reminter. No fees are charged to the previous Verified Minter.

Remint fees are reviewed periodically and may be adjusted at the Operator's discretion.

## Underlying Asset - Mint/Redeem Rate Limit

<table><thead><tr><th width="117">Asset</th><th width="130">Limiter</th><th width="190">Capacity (USDV)</th><th>Refill Rate (USDV/Second)</th></tr></thead><tbody><tr><td>STBT</td><td>Minting</td><td>100,000,000</td><td>1157</td></tr><tr><td>STBT</td><td>Redemption</td><td>50,000,000</td><td>578</td></tr></tbody></table>


# Contract Addresses

Please refer to [How to display tokens in MetaMask](https://support.metamask.io/hc/en-us/articles/360015489031-How-to-display-tokens-in-MetaMask#h_01FWH492CHY60HWPC28RW0872H) to import`STBT`and`USDV`to MetaMask.

To add networks to MetaMask, visit chainlist.wtf. There, you can easily connect your MetaMask and add networks with just a few clicks. (refer to: [How to add a custom network RPC](https://support.metamask.io/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC))

`STBT` and `USDC` are mocked contracts, and `USDV` is the same version of the mainnet.

## Mainnet

The Mainnet website is <https://usdv.money/>. Currently, Mainnet supports the following chains:

1. Ethereum
2. BSC
3. Avalanche
4. Arbitrum
5. Optimism
6. Polygon
7. Viction (ex TOMO)

## Testnet

The Testnet website is <https://test.usdv.money/>. Currently, Testnet supports the following chains:

1. Ethereum Sepolia
2. BSc Testnet
3. Avalanche Fuji
4. Arbitrum Sepolia
5. Optimism Sepolia
6. Polygon Mumbai
7. Tron Testnet

## Contract Addresses

### Ethereum Mainnet

| Contract Name | Address                                    |
| ------------- | ------------------------------------------ |
| USDV          | 0x0E573Ce2736Dd9637A0b21058352e1667925C7a8 |
| VaultManager  | 0x2A30E3C5c9DaF417663Dd3903144B394a82C999b |
| Operator      | 0x840e92Ad2E4df5C05a80da4e7a9a590C84928c91 |
| EthereumLP    | 0x3986D5C53cE965EA16EF66845AB56A9DdE9Cd210 |
| MinterProxy   | 0x3c6CE18aFDE845635A32a69D0a7721b0Db84118e |
| ViewDelegate  | 0x7da4b01D014a02d92637bD27118f7da3b3DAaA17 |
| MessagingV1   | 0x35E8d1DA73e927fA6E9B01892de0cAB468f647dF |

### Ethereum-Sepolia Testnet

| Contract Name | Address                                    |
| ------------- | ------------------------------------------ |
| USDV          | 0x1e2cF3fE741B8Cb77d0E4Fb58aAE1C46779A003d |
| VaultManager  | 0x4730907f4452bb233a09b7de3c41B3AD2C219e5a |
| Operator      | 0x0C3fD331b9040b9d7B2b37e1a39922932F1156cC |
| EthereumLP    | 0x071b91fce3f4a24746B1711Ef0d1ff94FE62C874 |
| MinterProxy   | 0xFD12E348DAf0c87859a330bC10D360B031DD2A1E |
| MessagingV1   | 0xAB85BAF91170A434eF81e648cF4A3c397bd875f8 |

### BSC

| Contract Name | Address                                    |
| ------------- | ------------------------------------------ |
| USDV          | 0x323665443CEf804A3b5206103304BD4872EA4253 |
| Operator      | 0xBed0fCb924Af5A7cf79016B8b66B87c64bD4dedB |
| SidechainLP   | 0x7F9A873cB57AF892e229b8EE445dde9372539fce |
| RecolorHelper | 0x31691Fd2Cf50c777943b213836C342327f0DAB9b |
| MessagingV1   | 0x35E8d1DA73e927fA6E9B01892de0cAB468f647dF |

### BSC Testnet

| Contract Name          | Address                                    |
| ---------------------- | ------------------------------------------ |
| USDV                   | 0x5EcB0fdbc8E4D137E492fB219683dcd171eE89aa |
| SidechainLP            | 0x6E3960Ce6B010AC3A5E1723F2D066ac073378Bb5 |
| BridgeRecolor(color 3) | 0xCa021673eA89aeC1D2264f8aC09359614E4A902e |
| Operator               | 0x5bBfeA723D023aa5E5d45fCa353B78383B5c7A5E |
| RecolorHelper          | 0xb77672456F0A61021724D0f40007e03EF943Bb88 |
| MessagingV1            | 0xF92f1938e5B855ae8767Ef44aDDE98CD0a8af6B8 |

### Avalanche

| Contract Name | Address                                    |
| ------------- | ------------------------------------------ |
| USDV          | 0x323665443CEf804A3b5206103304BD4872EA4253 |
| Operator      | 0xE7Af697C5A1cF059C98B50866f74B1d43C422258 |
| SidechainLP   | 0x728A036fBBF66FD7b09807a8d605c929B44bDF9E |
| RecolorHelper | 0x9e36b95278C3af219d78B343168AdEDa7C59A7f3 |
| MessagingV1   | 0x35E8d1DA73e927fA6E9B01892de0cAB468f647dF |

### Avalanche Fuji Testnet

| Contract Name          | Address                                    |
| ---------------------- | ------------------------------------------ |
| USDV                   | 0x5D80e890852c259aAC8e1aB4748dDf13c3E88503 |
| SidechainLP            | 0x2b4161E409C2a36146B38De760Dfc8C69C3695e7 |
| BridgeRecolor(color 3) | 0xb77672456F0A61021724D0f40007e03EF943Bb88 |
| Operator               | 0x01490a60e6eF7fCA7CbC7002086F618556f80F34 |
| RecolorHelper          | 0x6E3960Ce6B010AC3A5E1723F2D066ac073378Bb5 |
| MessagingV1            | 0x5bBfeA723D023aa5E5d45fCa353B78383B5c7A5E |

### Arbitrum

| Contract Name | Address                                    |
| ------------- | ------------------------------------------ |
| USDV          | 0x323665443CEf804A3b5206103304BD4872EA4253 |
| Operator      | 0x292dD933180412923ee47fA73bBF407B6d776B4C |
| SidechainLP   | 0x4607432711D0A26Bdb9DfF61A6Ab1d32780690d2 |
| RecolorHelper | 0xE7Af697C5A1cF059C98B50866f74B1d43C422258 |
| MessagingV1   | 0x35E8d1DA73e927fA6E9B01892de0cAB468f647dF |

### Arbitrum Sepolia Testnet

| Contract Name          | Address                                    |
| ---------------------- | ------------------------------------------ |
| USDV                   | 0x5EcB0fdbc8E4D137E492fB219683dcd171eE89aa |
| SidechainLP            | 0x9D43B195A2DE41656e7e57D83F2CB225952Aa72E |
| BridgeRecolor(color 3) | 0x992c7d66177B836b7F6537b0053d48aF1f06161F |
| Operator               | 0x3Fb797491d7f99B37013433AACfbb2084a741A54 |
| RecolorHelper          | 0x6cCa20F9cfCB87c2C49143E207E991A64099FB17 |
| MessagingV1            | 0x192F8e485C16cB9B50A70B93B80812De5B495e34 |

### Optimism

| Contract Name | Address                                    |
| ------------- | ------------------------------------------ |
| USDV          | 0x323665443CEf804A3b5206103304BD4872EA4253 |
| Operator      | 0xbbE4Dc52Fc43e7EEED6ED439BF6219E3407Cf605 |
| SidechainLP   | 0x5cCFd72da5bd694CB6CD2919987Ced474F8E3Fb3 |
| MessagingV1   | 0xE5feD5b0f777F3244D8523F7FC41EF61147cDf4c |
| RecolorHelper | 0x7F9A873cB57AF892e229b8EE445dde9372539fce |

### Optimism Sepolia Testnet

| Contract Name          | Address                                    |
| ---------------------- | ------------------------------------------ |
| USDV                   | 0x5EcB0fdbc8E4D137E492fB219683dcd171eE89aa |
| SidechainLP            | 0x9D43B195A2DE41656e7e57D83F2CB225952Aa72E |
| BridgeRecolor(color 3) | 0x992c7d66177B836b7F6537b0053d48aF1f06161F |
| Operator               | 0x3Fb797491d7f99B37013433AACfbb2084a741A54 |
| RecolorHelper          | 0x6cCa20F9cfCB87c2C49143E207E991A64099FB17 |
| MessagingV1            | 0x192F8e485C16cB9B50A70B93B80812De5B495e34 |

### Polygon

| Contract Name | Address                                    |
| ------------- | ------------------------------------------ |
| USDV          | 0x323665443CEf804A3b5206103304BD4872EA4253 |
| Operator      | 0x9239Bc1DBE02f7044A46CF0bAbC0F6bf7Ad4BB05 |
| SidechainLP   | 0x0Db498732D4cDBE0324105653d3a16E0181f6B3F |
| RecolorHelper | 0xc4F5922435fC4748C47D8c9Efa55099616aa665D |
| MessagingV1   | 0x3A55D9a7f0cF601e5F148d65ED4bfc8a9C0c7025 |

### Polygon Mumbai Testnet

| Contract Name          | Address                                    |
| ---------------------- | ------------------------------------------ |
| USDV                   | 0x5EcB0fdbc8E4D137E492fB219683dcd171eE89aa |
| SidechainLP            | 0xd1A52fFaC10A90F4D7553913fdf5EdA5787a4F1c |
| BridgeRecolor(color 3) | 0xb953b1B617c4368E2aaDa36bfD23fEAc606D85C2 |
| Operator               | 0x67E6A1fDF74642c30cDE2F16A92C1B2B0ABF965D |
| RecolorHelper          | 0x63c2d5a9e31A979Cdf17fC32B34e2009488859B9 |
| MessagingV1            | 0xa78D1Bc61326a770d91Abf4406f9A216C89c209B |

### Viction (ex TOMO)

| Contract Name | Address                                    |
| ------------- | ------------------------------------------ |
| USDV          | 0x323665443CEf804A3b5206103304BD4872EA4253 |
| Operator      | 0x903d58A8fa472eb671689d79d708841999703C0B |
| SidechainLP   | 0x0Db498732D4cDBE0324105653d3a16E0181f6B3F |
| RecolorHelper | 0x2b15121775b54aA7a20592d1CF631E62d05B2B86 |
| MessagingV1   | 0x2A30E3C5c9DaF417663Dd3903144B394a82C999b |

### Tron Testnet

| Contract Name | Address                            |
| ------------- | ---------------------------------- |
| USDV          | TLBZ9RmxQgKzhnorpJVBuiLNmKojuRZrCz |
| Operator      | TJuYfU4jxhECK4WSu86dCfhT2yBGSgJZyV |
| SidechainLP   | TMhVedGehJUPar9zsPJ1ee6KwwbdVNAXnp |
| RecolorHelper | TUwAK7EvvFSdh1vrepmfJCFi2qagjru8vs |
| MessagingV1   | TCkrEoxUva65uYWNwrTBa4C8uoV83LxRVk |


# Contract Governance

Flexibility to rotate between roles within a wallet

## **Vault**

<table><thead><tr><th width="180">Role</th><th>Functions</th></tr></thead><tbody><tr><td>Operator</td><td><ol><li>Set Operator Fee</li><li>Set the Redemption_Fee in the range of [0, Redemption_Fee_Cap]</li><li>Register/rotate minter address</li><li>Pause color</li><li>Adjust mint/redeem rate limiter</li></ol></td></tr><tr><td>Foundation</td><td><ol><li>Change the Operator if the Operator forfeits the right by transferring to an empty address, or the Operator has yet to interact with the Vault contract for 30 days. </li><li>Set the Redemption_Fee_Cap in the range of [10 bps ,10000 bps]</li></ol></td></tr><tr><td>Owner</td><td><ol><li>Upgrade Contract</li><li>Register/pause-mint new assets</li><li>Withdraw from Reserve Wallet</li><li>Set global pause</li><li>Set Rate Limiter contract</li><li>Set Role</li><li><p>Set parameters:</p><ol><li>Reserve yield bps (capped at 3%)</li><li>Operator Fee Cap</li><li>Liquidity Provider Fee Cap</li></ol></li></ol></td></tr><tr><td>Liquidity Provider</td><td><ol><li>Set LP Fee</li></ol></td></tr><tr><td>Donor</td><td><ol><li>Donate backing assets to the vault without minting the USDV</li></ol></td></tr></tbody></table>

## USDV

<table><thead><tr><th width="180">Role</th><th>Functions</th></tr></thead><tbody><tr><td>Foundation</td><td><ol><li>Blacklist users from mint/burn/transfer/transferFrom</li></ol></td></tr><tr><td>Operator</td><td><ol><li>Pause the contract</li><li>Change the Remint/Sync Fee</li><li>Adjust cross-chain rate limiter</li><li>Set Colorer and Default Color</li></ol></td></tr><tr><td>Vault</td><td><ol><li>Mint </li><li>Burn </li></ol></td></tr><tr><td>Owner </td><td><ol><li>Upgrade Contract</li><li>Set Role</li></ol></td></tr></tbody></table>


# Contract ABI

| ABI                                                                                                            |
| -------------------------------------------------------------------------------------------------------------- |
| [VaultManager](https://github.com/usdv-foundation/docs/blob/main/docs/.gitbook/assets/abis/VaultManager.abi)   |
| [USDV(Main)](https://github.com/usdv-foundation/docs/blob/main/docs/.gitbook/assets/abis/USDVMain.abi)         |
| [USDV(Side)](https://github.com/usdv-foundation/docs/blob/main/docs/.gitbook/assets/abis/USDVSide.abi)         |
| [Operator](https://github.com/usdv-foundation/docs/blob/main/docs/.gitbook/assets/abis/Operator.abi)           |
| [EthereumLP](https://github.com/usdv-foundation/docs/blob/main/docs/.gitbook/assets/abis/EthereumLP.abi)       |
| [MinterProxy](https://github.com/usdv-foundation/docs/blob/main/docs/.gitbook/assets/abis/MinterProxy.abi)     |
| [SidechainLP](https://github.com/usdv-foundation/docs/blob/main/docs/.gitbook/assets/abis/SidechainLP.abi)     |
| [RecolorHelper](https://github.com/usdv-foundation/docs/blob/main/docs/.gitbook/assets/abis/RecolorHelper.abi) |
| [BridgeRecolor](https://github.com/usdv-foundation/docs/blob/main/docs/.gitbook/assets/abis/BridgeRecolor.abi) |


# Liquidity Provision

To facilitate low-slippage stable coins to USDV conversion, we deploy a list of Liqiudity Provision (LP) contracts on [different chains](/docs/technical-reference/deployments):

### Ethereum

Supports stable coins to STBT conversion

```
interface IToSTBTLp {
    function getSupportedTokens() external view returns (address[] memory tokens);

    function swapToSTBT(address _fromToken, uint _fromTokenAmount, uint _minStbtOut) external returns (uint stbtOut);

    function getSwapToSTBTAmountOut(address _fromToken, uint _fromTokenAmount) external view returns (uint stbtOut);
}
```

### Non Ethereum

Supports stable coins to USDV conversion

```
interface IToUSDVLp {
    function getSupportedTokens() external view returns (address[] memory tokens);

    function swapToUSDV(
        address _fromToken,
        uint _fromTokenAmount,
        uint _minStbtOut,
        address _receiver
    ) external returns (uint usdvOut);

    function getUSDVOut(address _fromToken, uint _fromTokenAmount) external view returns (uint usdvOut);
}
```


# Rate Limiter

### Mint/Redeem Rate Limiter

To limit the worst case exposure of USDV to the technical issues of underlying assets, we install a rate limiter to both the minting and redemption process of assets. The Rate Limiter is designed as a token bucket with a capacity and per second refill rate.&#x20;

```
limiter_budget = min(capacity, remaining + refill_rate * time_lapsed)
```

Rate limiter parameters can be found [here](/docs/concepts/parameters).

For example, if the underlying asset (e.g. X token) contract has a bug that create Y quantity of tokens, and the minting rate limiter's capacity is Z, then its maximum impact to USDV is limited to Z plus the time-based refilling before we noticed the problem and pause the asset.&#x20;

### Cross-chain Rate Limiter

To limit the exposure USDV has on any single chain, especially relatively new chains, we install a rate limiter to limit their Net Outbound. The rate limiter works the same as [Mint/Redeem Rate Limiter](#mint-redeem-rate-limiter).

Rate limiter overview:

* Outbound token transfers from a chain consume part of that chain's rate limit.
* Inbound token transfers to a chain refill part of that chain's rate limit.

Rate limiter parameters can be found [here](/docs/concepts/parameters).


# Gas Profile

Below shows the gas profile of functions for composability.&#x20;

* USDV behaves like a normal ERC-20 tokens with slightly more gas in transfer for recording the coloring metadata.&#x20;
* The gas cost of USDV remint function on Ethereum is a function of the number of colors involved in the reminting operations. It grows linearly in proportion to the colors involved. The avg 151k is a good estimate of use cases.&#x20;
* VaultManager is the vault responsible for USDV issuance.&#x20;

```
·--------------------------------------|---------------------------|---------------|
|         Solc version: 0.8.19         ·  Optimizer enabled: true  ·  Runs: 10000  ·
·······································|···························|···············|
|  Methods                                                                          
·················|·····················|·············|·············|···············|
|  Contract      ·  Method             ·  Min        ·  Max        ·  Avg          ·
·················|·····················|·············|·············|···············|
|  USDV          ·  approve            ·      46288  ·      46324  ·        46309  ·
·················|·····················|·············|·············|···············|
|  USDV          ·  remint             ·     125267  ·     245566  ·       151237  ·
·················|·····················|·············|·············|···············|
|  USDV          ·  setEnforceColor    ·      31238  ·      51244  ·        47404  ·
·················|·····················|·············|·············|···············|
|  USDV          ·  transfer           ·      30587  ·      55522  ·        50933  ·
·················|·····················|·············|·············|···············|
|  USDV          ·  transferFrom       ·      35914  ·      58035  ·        54763  ·
·················|·····················|·············|·············|···············|
|  VaultManager  ·  distributeReward   ·     132092  ·     217592  ·       133494  ·
·················|·····················|·············|·············|···············|
|  VaultManager  ·  mint               ·     120399  ·     246955  ·       145789  ·
·················|·····················|·············|·············|···············|
|  VaultManager  ·  redeem             ·     135947  ·     240663  ·       159321  ·
·················|·····················|·············|·············|···············|
|  VaultManager  ·  withdrawReward     ·      74335  ·      79202  ·        78608  ·
·--------------------------------------|-------------|-------------|---------------|

```


# Terms and Conditions

These USDV Token Terms and Conditions (these “USDV Token Terms”) form a legal agreement between **Verified USD Company Limited** (“Token Issuer,” “we,” “us” or “our”) and you, whether personally or on behalf of an entity (“you” and “your”), as a user of the USDV Token Services (defined below). These USDV Token Terms state the terms and conditions that apply to your use of the USDV Token Services.

**PLEASE REFER TO** [**TERMS & CONDITIONS**](https://usdv.money/terms) **AND READ TERMS CAREFULLY**


# Privacy Policy

Thank you for choosing the relevant service(s) (the “Services”) and/or product(s) (the “Product”) provided by Verified USD Foundation (“USDV”) and its affiliates (hereinafter also referred to as “I”, “me”, “my”, “we”, “us” and “our” or the “Company”).&#x20;

By accessing or using our Services/Products, you CONSENT to the policies and practices set out in this privacy policy (the “Privacy Policy”) and represent and warrant that you have the valid consent and authority from the Relevant Person(s) (defined below) for us to collect, use, disclose and/or process your Personal Data as described herein.&#x20;

This Privacy Policy describes how we will collect, use and disclose your personal data when you access or use our Services/Products.&#x20;

You agree that USDV may update this Privacy Policy at any time by posting the amended version on our website and associated application program interface or mobile applications (the “Site”) or sending the latest Privacy Policy to you via email.&#x20;

Your use or continued use of any Services/Products after such amendment shall be deemed as your acceptance and agreement to the same.

**PLEASE REFER TO** [**PRIVACY POLICY**](https://usdv.money/privacy-policy) **AND READ TERMS CAREFULLY**


