create static method
Implementation
static WOTSWallet create(String name, Uint8List secret,
[Uint8List? v3tag, void Function(Uint8List)? randomGenerator]) {
if (secret.length != 32) {
throw ArgumentError('Invalid secret length');
}
Uint8List privateSeed = secret;
Uint8List? sourcePK;
final defaultTag = Uint8List(12)..fillRange(0, 12, 0x42); // Use 12-byte tag
if (randomGenerator != null) {
sourcePK =
WOTS.generateRandomAddress(defaultTag, secret, randomGenerator);
} else {
final components = componentsGenerator(secret);
privateSeed = components['private_seed']!;
sourcePK =
WOTS.generateAddress(defaultTag, privateSeed, componentsGenerator);
}
if (sourcePK.length != 2208) {
throw StateError('Invalid sourcePK length');
}
Uint8List addrTag = v3tag ??
WotsAddress.wotsAddressFromBytes(sourcePK.sublist(0, 2144)).getTag();
if (addrTag.length != WotsAddress.ADDR_TAG_LEN) {
throw StateError('Invalid tag');
}
return WOTSWallet(
name: name, wots: sourcePK, addrTag: addrTag, secret: privateSeed);
}