private static string CalculateAddress(byte[] publicKey, NetworkVersion.Type type) { var result = InternalCalculateAddress(publicKey, type); return(result.Item8); }
internal static (byte[], byte[], byte[], byte[], byte[], byte[], byte[], string) InternalCalculateAddress(byte[] publicKey, NetworkVersion.Type type) { var sha256 = new SHA256Managed(); var ripeMD160 = new RIPEMD160Managed(); var publicKeySha = sha256.ComputeHash(publicKey); var publicKeyShaRipe = ripeMD160.ComputeHash(publicKeySha); var preHashNetwork = ArrayHelpers.ConcatArrays(type.GetPrefix(), publicKeyShaRipe); var publicHash = sha256.ComputeHash(preHashNetwork); var publicHash2x = sha256.ComputeHash(publicHash); var checksum = new byte[CHECKSUM_SIZE]; Buffer.BlockCopy(publicHash2x, 0, checksum, 0, checksum.Length); var address = ArrayHelpers.ConcatArrays(preHashNetwork, checksum); var base58Address = address.EncodeBase58(); return(publicKeySha, publicKeyShaRipe, preHashNetwork, publicHash, publicHash2x, checksum, address, base58Address); }
public Address(byte[] publicKey, NetworkVersion.Type type = NetworkVersion.Type.MainNetworkPubKey) { PublicKey = publicKey; Base58Check = CalculateAddress(publicKey, type); }