1. What is HedgeUSD (HGUSD)?

HedgeUSD (HGUSD) is a decentralized, synthetic and self-pegged stablecoin protocol designed to maintain a $1 price peg through a reserve-backed mechanism. It operates entirely on-chain, with key features such as automated yield distribution, anti-dumping protection, flash loan prevention, and liquidity management, offering a stable, secure, and efficient asset for users.


2. How is the price of HGUSD maintained at $1?

The price of HedgeUSD (HGUSD) is dynamically adjusted using an internal reserve system. The price is determined by the ratio of HGUSD reserves (internal balance) to the total supply of HGUSD. When the reserves change (e.g., through minting or redemption), the price of HGUSD is adjusted accordingly to keep it close to $1.


3. How can I mint new HGUSD tokens?

You can mint HGUSD by depositing internal reserves into the contract. The amount of HGUSD you receive will be proportional to the current price of HGUSD. The minting process involves a small minting fee, which is deducted from the minted amount, and the HGUSD is credited to your account.

Steps to mint:

  1. Call the mint() function.
  2. Enter the amount you wish to mint and the minimum amount of HGUSD you expect to receive.
  3. Confirm the transaction.

4. How do I redeem HGUSD for reserves?

To redeem HGUSD for internal reserves (the assets backing HGUSD), you can call the redeem() function. The amount of HGUSD you redeem will be converted to reserves based on the current internal price of HGUSD.

Steps to redeem:

  1. Call the redeem() function.
  2. Enter the amount of HGUSD you wish to redeem and the minimum reserve amount you want to receive.
  3. Confirm the transaction.

5. What is the yield distribution mechanism?

HedgeUSD features an automated yield distribution system. Yield is accumulated into the contract by the controller and distributed proportionally to all HGUSD holders based on their share of the total supply.

Steps for yield distribution:

  1. The controller can accumulate yield by calling accumulateYield().
  2. Users can claim their proportional share of the yield by calling claimYield(), which mints new HGUSD tokens as yield and distributes them to eligible holders.

6. Who controls the yield accumulation and distribution?

The controller is responsible for accumulating yield by calling the accumulateYield() function. This yield is then distributed to users who hold HGUSD, with each userโ€™s share being proportional to the amount of HGUSD they hold relative to the total supply.


7. What is the anti-dumping mechanism in HGUSD?

The anti-dumping mechanism limits how much HGUSD a user can mint or redeem within a short time frame. This is to prevent large market movements that could destabilize the price. The system enforces a limit on the amount a user can dump based on their current balance and the total supply of HGUSD.


8. How does the contract protect against flash loan attacks?

Flash loan protection is built into the contract to prevent exploitative behaviors. It ensures that there is a minimum holding period between significant transactions, preventing a user from borrowing funds in a flash loan and manipulating the system. This protects against attacks where users could rapidly mint or redeem large amounts of HGUSD in a single transaction.


9. How can I add or remove liquidity from the system?

Users can add liquidity to the HedgeUSD contract by depositing HGUSD, which increases the internal reserves (rHUSD). Similarly, users can remove liquidity by withdrawing HGUSD, which decreases the reserve. These actions help ensure that there is always enough liquidity to support minting and redemption.

Steps to add liquidity:

  1. Call the addLiquidity() function.
  2. Specify the amount of HGUSD to add.
  3. Confirm the transaction..

Steps to remove liquidity:

  1. Call the removeLiquidity() function.
  2. Specify the amount of HGUSD to withdraw.
  3. Confirm the transaction.

10. How can I track the price and reserves of HGUSD?

You can track the price of HGUSD at any time by calling the getPrice() function, which will return the current price based on the internal reserves and total supply. This provides transparency about the value of HGUSD relative to its reserve backing.

Additionally, you can check the amount of HGUSD in circulation (totalSupply) and the reserve balance (rHUSD) to get a sense of the system’s liquidity and stability.