Skip to main content

Creating bonds

To create a bond, you first need to create a Bond Contract using our website. This is a contract that will be automatically created for you by our Bond Factory. While creating contracts on the Ethereum blockchain can be expensive, our system creates a minimal proxy that points to the implementation, which means you pay very little for contract creation.

You have full control over the Bond Contract that was created for you. BondSwap does not have any permission to modify or change any settings in that contract. The code for the Bond Contract was written in such a way that even if we don't have control over Bond Contracts, they are fully secure for users who buy bonds from those contracts.

After you create the Bond Contract, you will be able to create a Bond Class. Having a Bond Class will allow users to buy bonds..

Creating Bond Contract in details

To create a Bond Contract, visit our website here. You will see a form with the following fields:

  • Bond Reward Token: This is the address of the token that users will receive in emissions after buying your bonds. This cannot be changed later.
  • Bond Contract Version: You can use different implementations of our Bond Contract. The default value is always good for general use. Currently, we only have one implementation version, but this will change in the future, so you don't need to worry about this option.
  • Bond Administrator: This is the address that will be authorized to create new Bond Classes, administer the Bond Contract, and withdraw funds from it. Attention! Please double-check if you provided the correct address here. Providing an incorrect address here will lock your contract, as you will not be able to create Bond Classes.

After successfully signing the transaction (using MetaMask or other wallet) to create the Bond Contract, you will be able to create a Bond Class.

Creating Bond Class in details

Every bond contract can contain multiple Bond Classes with varying terms. To establish a Bond Class, please visit our website here. On the site, you will encounter a form featuring the following fields:

  • Bond Pay Token: Choose whether users should be able to purchase bonds using ETH or ERC20 tokens.
  • Maturing Period: The time after which the full amount of tokens connected to the bond can be claimed in full. This period starts after a bond is purchased and is unique for each bond. Users can still claim partial emissions at every block.
  • Minimum Bond Price: The minimum price for this type of bond (not per token, this is the floor price for the entire bond).
  • Price Per Token: The fixed price per token (required if the Bond Price Checker is not set).
  • Enabled: Indicates whether the bond should be enabled at the time of creation.
  • Bond Price Checker: (Optional) The contract address that implements the BondSwap interface for checking the price. Use this if the price is determined dynamically by another contract. You can read more about this mechanism here (TODO LINK).
  • Premium Percent: (Optional) This is mostly used in combination with dynamic price checkers and represents the additional premium percentage of tokens over the returned price that a user should receive when purchasing the bond.

Funding bonds

After creating the bond contract, you must send the reward token to the contract; otherwise, users will not be able to purchase your bonds. The reward token can be withdrawn at any time, in an amount equal to:

Available to withdraw = Reward token balance - Outstanding debt (all the tokens left to be emitted from the bonds in this contract)