Skip to content

Commit

Permalink
Merge pull request #19 from cusma/chore/update-deployment
Browse files Browse the repository at this point in the history
chore: update deployment
  • Loading branch information
cusma authored Jan 30, 2025
2 parents 5b6c6fb + d023f07 commit 2d11c39
Show file tree
Hide file tree
Showing 9 changed files with 44 additions and 23 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ D-ASA examples deployed on TestNet:

| Type | App ID | App Spec |
|-------------------|--------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|
| Zero Coupon Bond] | [733108734](https://lora.algokit.io/testnet/application/733108734) | [ARC-32](https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/zero_coupon_bond/ZeroCouponBond.arc32.json) |
| Fixed Coupon Bond | [733108735](https://lora.algokit.io/testnet/application/733108735) | [ARC-32](https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/fixed_coupon_bond/FixedCouponBond.arc32.json) |
| Perpetual Bond | [733108736](https://lora.algokit.io/testnet/application/733108736) | [ARC-32](https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/perpetual_bond/PerpetualBond.arc32.json) |
| Zero Coupon Bond] | [733151482](https://lora.algokit.io/testnet/application/733151482) | [ARC-32](https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/zero_coupon_bond/ZeroCouponBond.arc32.json) |
| Fixed Coupon Bond | [733151497](https://lora.algokit.io/testnet/application/733151497) | [ARC-32](https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/fixed_coupon_bond/FixedCouponBond.arc32.json) |
| Perpetual Bond | [733151498](https://lora.algokit.io/testnet/application/733151498) | [ARC-32](https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/perpetual_bond/PerpetualBond.arc32.json) |

1. Download the App Spec JSON file;
1. Navigate to the [Lora App Lab](https://lora.algokit.io/testnet/app-lab);
Expand Down
2 changes: 1 addition & 1 deletion docs/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
- [Contract]()
- [Type](./contract-type.md)
- [Denomination](./denomination.md)
- [Principal (Par)](./principal.md)
- [Principal](./principal.md)
- [Interests](./interests.md)
- [Variable Interests](./variable-interests.md)
- [Time Schedule](./time-schedule.md)
Expand Down
4 changes: 3 additions & 1 deletion docs/interests.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ points</a>* (*bps*).

## Interest Rate

The D-ASA **MUST** define a *nominal interest rate* \\([IPNR]\\) (`uint16`).
The D-ASA **MAY** define a nominal *interest rate* \\([IPNR]\\) (`uint16`).

The *interest rate* **MUST** be set using the `asset_config` method.

## Coupons

Expand Down
2 changes: 1 addition & 1 deletion docs/payment-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
> of payees.
> Although a single block proposer could order transactions in a block, in a healthy
> network, block proposers are selected randomly by the Algorand consensus. Therefore,
> network block proposers are selected randomly by the Algorand consensus. Therefore,
> order of payments in a block is random and unbiased, with no systematic advantage
> or precedence of a payee with respect to others.
Expand Down
14 changes: 10 additions & 4 deletions docs/principal.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,29 +31,35 @@ The *discount* **MUST** be set using the `asset_config` method.
> Let’s have a D-ASA denominated in EUR, with a principal of 1M EUR paid at maturity
> and a minimum denomination of 1,000 EUR. The D-ASA has a principal discount of
> 200 bps (2%) at the issuance. Each D-ASA unit is sold on the primary market at
> 980 EUR and will redeem 1,000 EUR of principal at maturity.
> 980 EUR and will be redeemed for 1,000 EUR of principal at maturity.
## Amortization

> ⚠️This section is still subject to major changes and reviews.
> Debt instruments principal may be amortized until maturity, according to an amortization
> schedule.
If the debt instrument has *principal amortization*, the D-ASA **MUST** define the
*amortization rates* as `uint16[]` array, where:

- The length of the array is `N=K+1`, with `K` equal to the **fixed** *total coupons*;
- The length of the array is `N=K+1`, with `K` equal to the **fixed** *total coupons*
(see [Coupons](./interests.md#coupons) section);

- The first `K`elements of the array are the *amortizing rates* associated with
*coupon* payments;

- The last element of the array is the *amortization rate* associated with *principal*
payment;
- The last element of the array is the *amortization rate* associated with *outstanding
principal* payment at *maturity date*;

- The elements of the array are expressed in *<a href="https://en.wikipedia.org/wiki/Basis_point">basis
points</a>* (*bps*);

- The sum of all the *amortization rates* is equal to `10,000` *bps*.

The *amortization rates* define the amount of principal \\([PRNXT]\\) paid at the
next payment date.

> 📎 **EXAMPLE**
>
> A D-ASA with 5 coupons and even principal amortizing rates has the following amortizing
Expand Down
6 changes: 3 additions & 3 deletions docs/reference-implementation.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ D-ASA examples deployed on TestNet:

| Type | App ID | App Spec |
|-------------------------------------------------|-------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
| [Zero Coupon Bond](./ref-zero-coupon-bond.md) | <a href="https://lora.algokit.io/testnet/application/733108734">733108734</a> | <a href="https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/zero_coupon_bond/ZeroCouponBond.arc32.json">ARC-32</a> |
| [Fixed Coupon Bond](./ref-fixed-coupon-bond.md) | <a href="https://lora.algokit.io/testnet/application/733108735">733108735</a> | <a href="https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/fixed_coupon_bond/FixedCouponBond.arc32.json">ARC-32</a> |
| [Perpetual Bond](./ref-perpetual-bond.md) | <a href="https://lora.algokit.io/testnet/application/733108736">733108736</a> | <a href="https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/perpetual_bond/PerpetualBond.arc32.json">ARC-32</a> |
| [Zero Coupon Bond](./ref-zero-coupon-bond.md) | <a href="https://lora.algokit.io/testnet/application/733151482">733151482</a> | <a href="https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/zero_coupon_bond/ZeroCouponBond.arc32.json">ARC-32</a> |
| [Fixed Coupon Bond](./ref-fixed-coupon-bond.md) | <a href="https://lora.algokit.io/testnet/application/733151497">733151497</a> | <a href="https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/fixed_coupon_bond/FixedCouponBond.arc32.json">ARC-32</a> |
| [Perpetual Bond](./ref-perpetual-bond.md) | <a href="https://lora.algokit.io/testnet/application/733151498">733151498</a> | <a href="https://github.com/cusma/d-asa/blob/main/smart_contracts/artifacts/perpetual_bond/PerpetualBond.arc32.json">ARC-32</a> |

1. Download the App Spec JSON file;
1. Navigate to the <a href="https://lora.algokit.io/testnet/app-lab">Lora App Lab</a>;
Expand Down
10 changes: 5 additions & 5 deletions docs/time-events.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
# Time Events {#time-events}
# Time Events

> D-ASA *time events* are time on which contractual events are due or on which cyclic
> events begin or end.
## Primary Distribution {#primary-distribution}
## Primary Distribution

> Debt instruments can be distributed on the primary market during the primary distribution.
> The opening and closure dates define the primary distribution duration.
The D-ASA **MUST** have a *primary opening* (`uint64`) and *closure date* (`uint64`).

## Issuance {#issuance}
## Issuance

> Debt instruments start accruing interest on the issuance date.
The D-ASA **MUST** have an *issuance date* \\([IED]\\) (`uint64`).

## Maturity {#maturity}
## Maturity

> Debt instruments may have a maturity date, on which the principal is repaid and
> the contract obligations expire.
Expand All @@ -29,7 +29,7 @@ The D-ASA **MAY** have a *maturity date* \\([MD]\\) (`uint64`).
The *maturity date* **MAY** be updated in case of early repayment options (see
[Early Repayment Options](./early-repayment-options.md) section).

## Time Events array
## Time Events Array

The D-ASA **MUST** define *time events* \\([TEV]\\) as `uint64[]` array, where:

Expand Down
4 changes: 2 additions & 2 deletions docs/time-periods.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Time Periods {#time-periods}
# Time Periods

> D-ASA time periods can be used to define recurring (or "cyclic") events.
Expand Down Expand Up @@ -56,7 +56,7 @@ events*.
> The sum of the 4 coupon *time period durations* must be smaller than the time
> period between the *issuance date* and the *maturity date*.
## Unlimited time schedule
## Unlimited Time Schedule
If the D-ASA has an **undefined** number of *coupons*, then the *coupon due dates*
\\([IP]\\) **MUST** be defined with a *time period* `(uint64,uint64)`.
Expand Down
19 changes: 16 additions & 3 deletions docs/variable-interests.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,25 @@
# Variable Rates

> ⚠️This section may still be subject to major changes and reviews.
> ⚠️This section is still subject to major changes and reviews.
> Debt instruments may have variable interest rates, based on external data oracles.
If the debt instrument has *variable interest rates*, the D-ASA **MAY** implement
the **OPTIONAL** `set_variable_interest` method.

## Interest Update Dates

The D-ASA **MUST** define *interest update dates* of known \\([RRF]\\) or unknown
\\([RR]\\) with respect to:

- *time events* if the D-ASA has **fixed** number of *coupons* (see [Time
Events](./time-events.md#time-events-array) section);

- *time periods* if the D-ASA has **undefined** number of *coupons* (see [Time
Periods](./time-periods.md#unlimited-time-schedule) section).

The first *interest update date* corresponds to \\([RRANX]\\).

## Spread

> Debt instruments typically define a spread (bps) with respect to an external index
Expand All @@ -30,7 +43,7 @@ spread* to `0`.
> Debt instruments may define limitations to the interest rate variability, either
> over the whole contract lifespan or over specific periods.
### Life
### Life Caps

The D-ASA **MAY** define a *life cap* \\([RRLC]\\) (`uint16`) in *bps* to apply
to the variable *interest rate*.
Expand All @@ -47,7 +60,7 @@ cap* to `0`.
If the debt instrument has no *life floor*, then the D-ASA **MUST** set the *life
floor* to `0`.

### Period
### Period Caps

The D-ASA **MAY** define a *period cap* \\([RRPC]\\) (`uint16`) in *bps* to apply
to the variable *interest rate*.
Expand Down

0 comments on commit 2d11c39

Please sign in to comment.