Is it correct that it is allowed to directly transfer a holding to a different custodian?

So if I have a holding with custodian=alice and owner=bob and I call its Transfer choice and I specify a newOwnerAccount as custodian=charlie, owner=bob,

(The Transfer choice requires authorization of multiple parties so let us say I have used some workflow contract to collect signatures as necessary)

The default implementation of Transfer which is transferImpl (https://github.com/digital-asset/daml-finance/blob/97dbed69781cd96cea60507319bfedaad1e7d60e/src/main/daml/Daml/Finance/Holding/Util.daml#L38) will happily allow such a transfer. I verified this with a little test script and I note that the new custodian would often be required to explicitly sign this transfer, but not necessarily, e.g. if their authority is available in the transferImpl execution context for another reason (such as being the owner of the holding or the controller.outgoing of the sender account, or any other reason that is not explicitly authorizing the intrinsic Account.Credit).

Could you help me explain the paradigm here?. I am thinking that a Holding represents some kind of digital asset or cryptocurrency, and to me, the requirements of that would be 1) participants have consensus on the amount, 2) participants validate that there are no double spends and 3) participants know what the minting/burning rules are and validate that they are being followed. If the paradigm is that a holding can be transferred to another custodian, and from there to another, and from there to another, etc., combined with the fact that a custodian can freely mint and burn Holdings with custodian=them, then generally any DAML party on the network can mint or burn from the money supply and the privacy model means that such activity would generally not be visible to others.

Of course as a custodian one could protect the value of the Holdings one is the custodian of by refusing all incoming transfers from currentCustodian=notMe, newAccount.custodian=me, but if that is the solution then it seems like the Transfer choice should be enforcing that, really, in order to match the implications of the name “Transfer”.

Hi @Alun,

thanks for your message, I agree that we should add that check.

I have added an issue where we can track this: 992

Best,
Johan

1 Like