publicKeyToAddress method
Implementation
@override
String publicKeyToAddress(Uint8List publicKey) {
final Algorithm = 'ed25519';
final buf = List<int>.filled(65, 0);
for (var i = 0; i < Algorithm.length; i++) {
buf[i + 1] = Algorithm.codeUnitAt(i);
}
buf[17] = publicKey.length;
for (var i = 0; i < publicKey.length; i++) {
buf[i + 25] = publicKey[i];
}
final pubkeyHash =
Blake2b.getBlake2bHash(Uint8List.fromList(buf.sublist(0, 57)));
final timeLockHash = dynamicToUint8List(TIME_LOCK_HASH);
final sigHash = dynamicToUint8List(SIG_HASH);
buf[0] = 0x01;
for (var i = 0; i < timeLockHash.length; i++) {
buf[i + 1] = timeLockHash[i];
}
for (var i = 0; i < pubkeyHash.length; i++) {
buf[i + 33] = pubkeyHash[i];
}
final tlpkHash = Blake2b.getBlake2bHash(Uint8List.fromList(buf));
for (var i = 0; i < tlpkHash.length; i++) {
buf[i + 1] = tlpkHash[i];
}
for (var i = 0; i < sigHash.length; i++) {
buf[i + 33] = sigHash[i];
}
final unlockHash = Blake2b.getBlake2bHash(Uint8List.fromList(buf));
final checksum = Blake2b.getBlake2bHash(Uint8List.fromList(unlockHash));
final address = unlockHash + checksum.sublist(0, 6);
return dynamicToString(address);
}