addKey method
Future<BlockchainResponse>
addKey({
- required String fromAddress,
- required String mnemonic,
- String passphrase = '',
- required DerivationPath derivationPathOfNewGeneratedAccount,
- required String permission,
- required String allowance,
- required String smartContractId,
- required List<
String> methodNames, - required String privateKey,
- required String publicKey,
Implementation
Future<BlockchainResponse> addKey({
required String fromAddress,
required String mnemonic,
String passphrase = '',
required DerivationPath derivationPathOfNewGeneratedAccount,
required String permission,
required String allowance,
required String smartContractId,
required List<String> methodNames,
required String privateKey,
required String publicKey,
}) async {
final transactionInfo = await getTransactionInfo(
accountId: fromAddress,
publicKey: publicKey,
);
final gas = BlockchainGas.gas[BlockChains.near];
if (gas == null) {
throw Exception('Incorrect Blockchain Gas');
}
final List<Map<String, dynamic>> actions = [
{
"type": "addKey",
"data": {
"mnemonic": mnemonic,
"passphrase": passphrase,
"indexOfTheDerivationAccount": derivationPathOfNewGeneratedAccount
.accountNumber
.replaceAll("'", ""),
"permission": permission,
"receiverId": smartContractId,
"methodNames": methodNames,
},
},
];
final signedAction = await signNearActions(
fromAddress: fromAddress,
toAddress: fromAddress,
transferAmount: allowance,
privateKey: privateKey,
gas: gas,
nonce: transactionInfo.nonce,
blockHash: transactionInfo.blockHash,
actions: actions,
);
final res = await nearRpcClient.sendSyncTx([signedAction]);
return res;
}