At this moment harvesting in the mobile wallet is working in the following way:
create account links (remote, VRF, node)
send a persistent delegated message
Expected behavior
Two steps (key links and persistent delegated message) should be joined. It will simplify the harvesting view.
It's important to put a persistent delegated message in aggregate after key link transactions.
Start harvesting should send one aggregate transaction containing
unlink remote account (if an account is already linked and we don't have a private key for it in storage. We should unlink also if the storage remote private key doesn't generate a remote public key that is already linked in the network)
unlink the VRF key (if an account is already linked and we don't have a private key for it in storage. We should unlink also if the storage VRF private key doesn't generate a VRF public key that is already linked in the network)
unlink node key (if a node key is linked - we need to unlink the old one)
link remote account (only if we had to remove the old one - then we have to generate and link a new key)
link VRF key (only if we had to remove the old one - then we have to generate and link the new key)
link node key (always)
persistent delegated message (always)
Stop harvesting should send one aggregate transaction containing:
unlink node key (only if a node key is linked do we need to unlink the old one)
unlink remote account (only if an account is already linked and we don't have the private key for it in storage)
unlink VRF key (only if an account is already linked and we don't have the private key for it in storage)
Current behavior
At this moment harvesting in the mobile wallet is working in the following way:
Expected behavior
Two steps (key links and persistent delegated message) should be joined. It will simplify the harvesting view. It's important to put a persistent delegated message in aggregate after key link transactions.
Example transaction: https://symbol.fyi/transactions/43748B7F9868E624A72F8D81A394C2CBCF1A4021B5DF255501B1B9BAD2D494D6
The wallet should work in the following way:
Start harvesting should send one aggregate transaction containing
Stop harvesting should send one aggregate transaction containing: