Create Copy of Contract using Interface Reference

Hi All,

I have recently been exploring the Daml.Finance Library and familiarising myself with the Interface implementation.

I have created a contract with a reference to the Base Instrument.Key (like the holding does).

template Trade
    instrument : Instrument.K

In one of my choices I would like to create another instrument using the instrument referenced in the contract.

I have tried the following

instrumentContract <- fetchInterfaceByKey @Instrument.R instrument
create instrumentContract with
   depository = otherParty

But am getting the following error

No instance for (DA.Internal.Record.HasField “depository” Instrument.Instrument Party) arising from a use of ‘setField’. How should I approach this?

Is there a way to solve this? As the fetchInterfaceByKey only retrieves the Interface of a contract implementation, will I be able to recreate any instrument implementation this way ?

Hi @benedict_chan ,

You should be able to use the function fromInterface (documented here) to convert from the interface into its template value.

Kind Regards,