Add support in ACA-Py for the proposed DIDComm RPC (DRPC) Protocol
The protocol is proposed in this Pull Request to the Aries RFCs Repo. The DRPC Protocol is a DIDComm request / response protocol that implements a JSON-RPC Client-Server interaction. ACA-Py will provide the plumbing to enable the use of the DRPC protocol, leaving the implementation of any particular RPC request passed using the protocol up to the controller associated with the ACA-Py tenant.
Over to you @amanji. Let me know if you want to meet to discuss this.
If this is being done as a plugin (which probably makes sense), we should close this issue and open a replacement issue in the aries-acapy-plugins repository.
Yeah maybe we should transfer this to the other repo then
It may require changes to aca-py though ...
I'm not sure what changes would need to be made internally. My thoughts are that RPC methods would be loaded through external plugins. The question remains whether DRPC should be included as a core protocol or itself as a plugin?
I'm not sure what changes would need to be made internally. My thoughts are that RPC methods would be loaded through external plugins. The question remains whether DRPC should be included as a core protocol or itself as a plugin?
If a plug-in can include RPC methods then we probably need some updates to core (where the plug-ins are loaded) to identify the fact that the plug-in includes support for RPC methods. The alternative is that one plug-in includes all of the RPC support.
I'm thinking for now to keep it very simple, it would be a single plugin for RPC support. I hope I'm not overlooking any use-cases that would require the alternative
At this point, the plugin is only to implement the DRPC protocol — including webhooks, Admin API endpoints, and the protocol state object handling. It will not process any of the RPCs, and should assume that the controller will do all of the RPC handling — running, getting the result. The plugin is simply conveying the requests.
This could be a core ACA-Py protocol. We’re doing it as a plugin assuming that is pretty straight-forward to do, and because the protocol is brand-new.
It is possible down the line that we could have other plugins that could invoke the RPCs that are passed to the Agent via the DRPC protocol, but that is outside of the scope of this issue. I think that significantly complicates the design.
Linked PR to implementation: https://github.com/hyperledger/aries-acapy-plugins/pull/78