deriveAddress function
Map<String, Object?>
deriveAddress({ - required Map<String, Object?> source,
- String chain = 'bitcoin',
- int account = 0,
- int change = 0,
- int index = 0,
- String? scriptType,
- String? format,
- String? path,
})
Implementation
Map<String, Object?> deriveAddress(
{required Map<String, Object?> source,
String chain = 'bitcoin',
int account = 0,
int change = 0,
int index = 0,
String? scriptType,
String? format,
String? path}) {
final info = _chain(chain);
_index(account, 'account');
_index(change, 'change');
_index(index, 'index');
final script = scriptType ?? info.defaultScriptType;
if (info.curve == 'ed25519') {
final resolvedPath = _path(
path ?? "m/44'/${info.coinType}'/$account'/$index'",
ed25519: true);
final node = Bip32Slip10Ed25519.fromSeed(_sourceSeed(source))
.derivePath(resolvedPath);
final public = node.publicKey.compressed;
return _addressResult(info, resolvedPath, account, change, index, script,
SolAddrEncoder().encodeKey(public), public.sublist(1));
}
final fmt = _format(info, format, script);
final resolvedPath = _path(
path ?? '${_accountPath(info, account, script, fmt)}/$change/$index');
final node = Bip32Slip10Secp256k1.fromSeed(_sourceSeed(source))
.derivePath(resolvedPath);
final public = node.publicKey.compressed;
return _addressResult(info, resolvedPath, account, change, index, script,
_publicKeyAddress(public, info, script), public);
}