I’m developing a service backed by Symbol, for which I want to setup a user’s accounts. The Symbol accounts are setup by the service, and so the service has access to the private keys of the accounts at the time of the setup. The accounts involved are:
-
SD_msigAccountis the account that needs to be converted to a multisig account to be used by the user -
SD_cosign1AccountandSD_cosign2Accountare the user-controlled accounts to be configured as cosignatories -
serviceAccountandserviceCosignAccountare accounts used by the service provider, and will also be set as cosignatories.
The service can operate correctly without any XYMs in the users accounts. So I would like to convert the user’s account SD_msigAccount to multisig and pay the fees from the serviceAccount.
I’m trying implementing it this way:
- make
SD_msigAccountsign theMultisigAccountModificationTransaction - create the hashlock transaction with the
serviceAccount
as shown below, but this still requires theSD_msigAccountto pay transaction fees.
Is what I’m trying to achieve possible? If yes how?
const multisigAccountModificationTransaction = MultisigAccountModificationTransaction.create(
Deadline.create(epochAdjustment),
3, // minApprovalDelta
3, // minRemovalDelta
[SD_cosign1Account.address,
SD_cosign2Account.address,·
serviceCosignAccount.address,·
serviceAccount.address], // address additions
[], // address deletions
networkType,
);
const aggregateTransaction = AggregateTransaction.createBonded(
Deadline.create(epochAdjustment),
[multisigAccountModificationTransaction.toAggregate(SD_msigAccount.publicAccount)],
networkType,
[], // cosignatures
UInt64.fromUint(2000000), //maxFee
);
const signedTransaction = SD_msigAccount.sign(
aggregateTransaction,
networkGenerationHash,
);
// lock 10 xym as spam prevention
const signedHashLockTransaction = await createSignedHashLockTx(signedTransaction,serviceAccount)
