Problem
The "Transfer Management Rights" feature currently has two issues:
-
Destination is incorrectly restricted — The destination contract dropdown only lists contracts that implement TransferShareManagementRights as sources. However, TransferShareManagementRights accepts any contract index via input.newManagingContractIndex, so the destination should allow selecting any existing smart contract.
-
Missing support for MsVault and qRWA revoke — These two contracts implement a different procedure (revokeAssetManagementRights / RevokeAssetManagementRights) that transfers management rights back to QX specifically. They are not currently available as source options.
Required Changes
1. Fix destination for TransferShareManagementRights
When the source is any of the contracts implementing this procedure, the destination dropdown should list all valid smart contracts, not just the ones that implement it.
2. Add contracts implementing RevokeAssetManagementRights as source options
MsVault and qRWA implement RevokeAssetManagementRights.
These SC should be listed as source only if there is a positive balance handled by the contract.
We shouldn't hardcode as in the feature it could be other contract supports it as well. Also, we need to add the fees in the smart_contracts.json in static.
When a SC implementing RevokeAssetManagementRights is selected as source:
- The destination must be auto-set to QX and displayed as read-only (these contracts hardcode
QX_CONTRACT_INDEX)
- On submit, call the corresponding revoke procedure (not
TransferShareManagementRights)
- Input params are the same for both:
{ Asset asset, sint64 numberOfShares }
Behavior Summary
| Source Contract |
Procedure |
Proc Index |
Destination |
Destination Editable? |
| Qx |
TransferShareManagementRights |
9 |
Any contract |
Yes |
| Qswap |
TransferShareManagementRights |
11 |
Any contract |
Yes |
| Qbay |
TransferShareManagementRights |
16 |
Any contract |
Yes |
| QRaffle |
TransferShareManagementRights |
8 |
Any contract |
Yes |
| QIP |
TransferShareManagementRights |
3 |
Any contract |
Yes |
| Nostromo |
TransferShareManagementRights |
9 |
Any contract |
Yes |
| MsVault |
revokeAssetManagementRights |
25 |
QX (fixed) |
No |
| qRWA |
RevokeAssetManagementRights |
8 |
QX (fixed) |
No |
Problem
The "Transfer Management Rights" feature currently has two issues:
Destination is incorrectly restricted — The destination contract dropdown only lists contracts that implement
TransferShareManagementRightsas sources. However,TransferShareManagementRightsaccepts any contract index viainput.newManagingContractIndex, so the destination should allow selecting any existing smart contract.Missing support for MsVault and qRWA revoke — These two contracts implement a different procedure (
revokeAssetManagementRights/RevokeAssetManagementRights) that transfers management rights back to QX specifically. They are not currently available as source options.Required Changes
1. Fix destination for
TransferShareManagementRightsWhen the source is any of the contracts implementing this procedure, the destination dropdown should list all valid smart contracts, not just the ones that implement it.
2. Add contracts implementing RevokeAssetManagementRights as source options
MsVault and qRWA implement RevokeAssetManagementRights.
These SC should be listed as source only if there is a positive balance handled by the contract.
We shouldn't hardcode as in the feature it could be other contract supports it as well. Also, we need to add the fees in the smart_contracts.json in static.
When a SC implementing RevokeAssetManagementRights is selected as source:
QX_CONTRACT_INDEX)TransferShareManagementRights){ Asset asset, sint64 numberOfShares }Behavior Summary
TransferShareManagementRightsTransferShareManagementRightsTransferShareManagementRightsTransferShareManagementRightsTransferShareManagementRightsTransferShareManagementRightsrevokeAssetManagementRightsRevokeAssetManagementRights