Daml finance app - Anyone can issue any instrument at will


Say that a StructuringCustomerA, through their Structuring.Service provided by a StructuringProviderB, requests to structure a BondA and StructuringProviderB approves it, resulting in a new Instrument BondA on the ledger.

Then, a IssuanceCustomerC thinks: Hey, let’s issue 1 BondA through their Issuance.Service provided by IssuanceProviderD - Anyway, StructuringCustomerA will pay the coupons (the issuer attribute in the Instrument BondA is StructuringCustomerA. Hence the party who will pay the coupons after lifecycling happens)

Am I missing something?



Hi @jvelasco.intellecteu,

What you describe above is indeed a feasible scenario:

  • two parties define the economic terms of an instrument (in this case, A and B define the economic terms of Bond A by creating the corresponding Instrument)
  • two other parties enter into an ownership / liability agreement with regards to that financial instruments (in this case, C and D enter into a Holding contract where C owns units of Bond A against D)

This is very similar to the real-world scenario where you and I sign a piece of paper stating that I owe you 5 USD:

  • the FED defines the economic terms of the USD instrument
  • you and I enter into an on-paper Holding contract where you are the owner and I am the custodian. The Holding references the USD instrument for an amount of 5 units

What is incorrect in the situation you describe above is to assume that the issuer of the instrument is liable to pay the coupons:

  • coupons (or lifecycle effects for a Holding in general) are always exchanged between the holding’s custodian and the owner. In this case, the coupon would be paid from D to C.
  • the action of lifecycling the Instrument contract is just used to
    • determine the amount of the coupon to pay
    • create the corresponding effect

I hope this helps to clarify the situation.

I believe that the source of confusion is the fact that, in the case of a real-world bond, the party referred to as the issuer is also the party that pays out the bond coupons. If we wanted to model this scenario in Daml Finance, we would need a setup as below:

The coupon payment would then happen in two steps:

  • P lifecycles the bond instrument to calculate the coupon amount and creates an Effect contract
  • I or P use the Holding contract to claim the Effect and generate Settlement Instructions

The settlement instructions would then look as follows:

  • owner sends a holding on the old instrument to custodian
  • custodian sends a holding on the new instrument to owner
  • custodian sends the coupon amount to the owner



Thanks for the clarification @Matteo_Limberto
As a follow-up question:
How would you implement the typical case where I have a Tesla bond at my bank?