Exemple #1
0
        private static string CalculateAddress(byte[] publicKey, NetworkVersion.Type type)
        {
            var result = InternalCalculateAddress(publicKey, type);

            return(result.Item8);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 public Address(byte[] publicKey, NetworkVersion.Type type = NetworkVersion.Type.MainNetworkPubKey)
 {
     PublicKey   = publicKey;
     Base58Check = CalculateAddress(publicKey, type);
 }