Adding Agents to a transfer
Adding other Agents
An important challenge, that is solved in the Notabene Platform, is having multiple counterparties in a transfer/transaction. For example you have an intermediary that has a role in the transaction process - as an example: a regulated custodian, or wallet provider.
How can I automatically add my Custodian to Transfers I receive or send?
This can be fully automated with the combination of your ‘Relationships’ and the discoverability via the Hashed Address Service.
Relationships: We allow a 'Custodian' field in Relationships. This allows entities and Intermediaries to register addresses on each others behalf.
An example Relation that can be registered:
{
“@id”: “did:pkh:settlement-address”,
“for”: “did:web:beneficiaryvasp.com”,
“Custodian”: “did:web:custodian.com”
}- Custodian: If a Custodian registers a relationship, in which an address (settlement or source) and 'for' field being another entity webDID; if they set their own webDID in the Custodian field, we send the full Relations to the Hashed Address Service, registering the address as owned by the entity, with the Custodian webDID as Custodian.
- Entity: If an entity, e.g. a VASP, registers a relationship, in which an address (settlement or source) and 'for' field being their own webDID; if they set another webDID in the Custodian field, we send the full Relation to the Hashed Address Service, registering the address as owned by the VASP, with the Custodian webDID as Custodian.
- (Note: in the Hashed Address Service the result from 1. and 2. is the same!)
Add Agent: whenever the Internal Relationships OR the Hashed Address Service returns both an address owner and an Custodian: Our platform updates the Agents in the Transfer:
Agents: [
{ “@id”: “did:pkh:settlement-address”, “for”: "did:web:beneficiaryvasp.com”, “role”: “SettlementAddress" },
{ “@id”: “did:web:originatorvasp.com”, “role”: “VASP" },
{ “@id”: “did:web:custodian.com”: “for”: “did:web:beneficiaryvasp.com”, “role”: “Custodian" },
{ “@id”: “did:web:beneficiaryvasp.com”, “VASP” }
]
As a result, whenever a Transfer is initiated and our Agent discovery methods call the Address Service, we will discover both the owner and the custodian. In TAP, both parties will therefore receive the Transfer and will be able to send their own policies and authorizations.
This can be done for any Source Address and Settlement Address.
Remarks:
- If for example a Beneficiary VASP for the settlement address was provided in the tx/create call, we will still perform agent discovery in the relationships and address service:
- The result might add an intermediary/custodian, but also it might discover that the intermediary/custodian was listed as beneficiary. If that is the case, we will add the registered beneficiary agent.
- If another VASP is registered as the owner, we Add them as Agent
- If in tx/create also already a custodian Agent was provided, and another custodian is registered, we Add them as another Custodian Agent to the Transfer
Add agents yourself
When you receive a Transfer and you/your system sees that for example your wallet provider, custodian or any other party that might need to be involved in the transaction authorization process, you can add these via:
POST {{url}}/entity/:entityDID/tx/:tx/agents
in the body add the agent DID, their role and for whom they are an Agent, e.g. if your entity is web:did:vasps.id:uk and you need to add a custodian as web:did:custodianx.co:uk, then:
{
"agent": {
"@id": "web:did:custodianx.co:uk",
"role": "Custodian",
"for": "web:did:vasps.id:uk"
}
}
currently supported role inputs are: "VASP" and "Custodian", but can easily be extended to roles like liquidity provider, market maker, wallet provider, transaction bank, PSP, etc.
The result of an Add Agent action is that the platform will send the Transfer, to the added agent, but also the add agent message to all already known agents in the transfer. This to keep everyone updated.
The added Agent entity can, as a consequence, send their authorization requirements to all or any other entity, and also fulfil other's requirements.
Updated about 3 hours ago
