deriveAccountPrivateKey function
Implementation
Map<String, Object?> deriveAccountPrivateKey(
{required Map<String, Object?> source,
String chain = 'bitcoin',
String? scriptType,
int account = 0,
String? format,
String? path}) {
final info = _chain(chain);
if (info.curve == 'ed25519') {
final resolvedPath =
_path(path ?? "m/44'/${info.coinType}'/$account'", ed25519: true);
final node = Bip32Slip10Ed25519.fromSeed(_sourceSeed(source))
.derivePath(resolvedPath);
return {
'schemaVersion': 1,
'chain': chain,
'curve': info.curve,
'path': resolvedPath,
'format': null,
'extendedPrivateKey': null,
'privateKeyHex': BytesUtils.toHexString(node.privateKey.raw),
'publicKeyHex':
BytesUtils.toHexString(node.publicKey.compressed.sublist(1))
};
}
final fmt = _format(info, format, scriptType);
final resolvedPath =
_path(path ?? _accountPath(info, account, scriptType, fmt));
final node =
Bip32Slip10Secp256k1.fromSeed(_sourceSeed(source), _versions(fmt))
.derivePath(resolvedPath);
return {
'schemaVersion': 1,
'chain': chain,
'curve': info.curve,
'path': resolvedPath,
'format': fmt.name,
'extendedPrivateKey': node.privateKey.toExtended,
'privateKeyHex': BytesUtils.toHexString(node.privateKey.raw),
'publicKeyHex': BytesUtils.toHexString(node.publicKey.compressed)
};
}