Real Yield Bond Purchase Tool (Discount-to-Par)
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
Real Yield Bond Purchase Tool (Discount-to-Par) is a DeFi tool that enables users to purchase bonds at a discount to their par (face) value, with the expectation of earning a yield at maturity. It reads the bond contract address, bond token address, payment token address, bond par value, discount rate, current bond price, bond maturity date, yield-to-maturity (YTM), purchase limits (minimum and maximum), user's purchase eligibility, purchase history, account nonce, gas estimates for purchase, and previous purchase records. The tool then guides you through purchasing bonds at a discount, depositing payment tokens, minting bond tokens at the discounted price, recording your purchase position, and updating your bond holdings.
HOW TO USE
Connect your wallet via the built-in connector. Select the network where the bond contract is deployed. Enter the bond contract address, bond token address, payment token address (use address(0) for native token), and the face value (par) amount you wish to purchase. The tool will read on-chain data and display a preview including: bond contract, bond token, payment token, purchase amount (par), bond par value, discount rate, current bond price (par minus discount), maturity date, yield-to-maturity (YTM), purchase limits, eligibility status, and estimated gas. Review all details carefully. Click "purchase bond" to execute the bond purchase at the discount-to-par price. The tool will guide you through four steps: verifying price and eligibility, depositing payment tokens, minting bond tokens at the discount price, and recording your purchase position.
TECHNICAL MECHANISM
The tool uses ethers.js v5.7.2 to interact with the bond contract. It reads the bond par value using `getParValue()`, the discount rate via `getDiscountRate()`, and the current bond price using `getCurrentPrice()` which is calculated as par value minus the discount. Maturity date is read via `getMaturityDate()` and yield-to-maturity (YTM) is calculated as `(par / price)^(1 / time) - 1`. Purchase limits are read using `getMinPurchase()` and `getMaxPurchase()`. User eligibility is checked using `isEligible(user)` which verifies that the purchase amount is within limits and that the user hasn't exceeded their allocation. Purchase history is scanned using `eth_getLogs` for `BondPurchased` events, with adaptive chunking (halving chunk size on failure) to handle different RPC limits—the tool walks backward from the current block and continues even if some ranges are rejected. The purchase transaction calls `purchaseBond(amount)` on the contract, which transfers payment tokens, mints bond tokens at the discount price, and records the user's position. Gas estimates are calculated using `estimateGas` on the purchase method with EIP-1559 fee data from `feeData`. All transactions are built with EIP-1559 fee data, and the tool uses `effectiveGasPrice` from receipts for accurate cost accounting.
WHAT IT CANNOT SEE
This tool cannot predict future yield changes that could affect the bond's value after purchase. It cannot guarantee that the protocol will generate enough yield to honor the par value at maturity. It cannot detect if the discount rate is manipulated by the contract owner. It cannot ensure that the yield-to-maturity (YTM) accurately reflects actual returns. It cannot prevent front-running of bond purchases by other users. It cannot validate that the bond will be redeemable at par at maturity—this depends on the protocol's financial health. It cannot verify that the bond contract is secure or free from vulnerabilities. It cannot predict changes in protocol governance that could affect bond terms or redemption conditions.
PLEASE NOTE
This tool is EVM-only and supports Ethereum, Polygon, BNB Chain, Arbitrum, Optimism, and Avalanche. The purchase transaction is signed by the connected wallet, and the user pays gas fees. Discount bonds are purchased below par value—ensure you understand the yield-to-maturity and the protocol's ability to honor par redemption. The tool does not store or transmit any bond data. Always verify bond terms, discount rate, and maturity date before purchasing. Test on testnet before using on mainnet.