feat: Allow investing/redeeming from Asset Hub
To ease the lives of investors from Asset Hub (AH) we can provide a way to invest/redeem from these chains without the need to switch to Centrifuge Chain.
NOTE - The investor ALWAYS needs to be connected to AH to control the tranche tokens on Centrifuge Chain. In the UI the
Portfoliowill be confusing then, the USDC is held on AH whereas the tranche tokens are held on Centrifuge.
Monitoring the success of the calls on Centrifuge can be done by linking from the XCM Hash to the associated subscan page here. Note that we need one link per XCM message sent.
Investing
Connected and executed call from AH
Invest
This assumes that either PoolCurrency or a currency that can be swapped via pallet-token-mux is held on AH by the user.
utility.batchAll
* polkadotXcm.limitedReserveTransferAsset(..)
* polkadotXcm.send(INVEST_TRANSACT)
Example:
- Encoded
polkadotXcm.limitedReserveTransferAssetfor transferring1 USDCfromAHtoCentrifuge:0x1f0803010100bd1f03000101008e450add99cf9e298985188545fb317153aa44cbf3fed49c9a5fa786689700080304000002043205e5140002093d000000000000NOTE: Decodable onAH - Encoded
INVEST_TRANSACTfor investing- Internal encoded transact data: ``
NOTE: Decodable on
Centrifuge
- Internal encoded transact data: ``
NOTE: Decodable on
Cancel Invest
utility.batchAll
* polkadotXcm.send()
Collecting Investments
utility.batchAll
* polkadotXcm.send()
Redeeming
Connected and executed call from AH
Redeem
utility.batchAll
* polkadotXcm.send()
Cancel Redeem
utility.batchAll
* polkadotXcm.send()
Collecting Redemptions
utility.batchAll
* polkadotXcm.send()
Portfolio
It is mandatory, that the UI checks for the holdings of the derived account on Centrifuge chain and displays them too in the portfolio overview.
Derived Account
- query
runtimeApi.AccountConversionApi.conversion_of(..)to retrieve theDerivedACcount- for a user with
AccountId-Xon asset hub the input is:Location {parents: 1, junction: [Parachain(1,000), AccountId32(AccountId-X)]}
- for a user with
Best would be to bring in this full ticket so that users see where their funds lie that they can control.
Testing
Testing this will be very hard, as all test networks do not have an actual AH atm... Easiest should be to start a new AH parachain in our dev cluster and use that one.