/// <summary> /// Network address. /// </summary> /// <returns>The address.</returns> /// <param name="coin">Coin.</param> /// <param name="networkApi">Network API.</param> public byte[] NetworkAddress(CoinDto coin, NetworkApiMethod networkApi = null) { Guard.Argument(coin, nameof(coin)).NotNull(); string env = string.Empty; byte[] address = new byte[33]; env = networkApi == null ? environment : networkApi.ToString(); address[0] = env == Constant.Mainnet ? (byte)0x1 : (byte)74; var hash = Cryptography.GenericHashWithKey( $"{coin.Envelope.Commitment}" + $" {coin.Envelope.Proof}" + $" {coin.Envelope.PublicKey}" + $" {coin.Envelope.Signature}" + $" {coin.Hash}" + $" {coin.Hint}" + $" {coin.Keeper}" + $" {coin.Principle}" + $" {coin.Stamp}" + $" {coin.Version}", Encoding.UTF8.GetBytes(coin.Principle)); Array.Copy(hash, 0, address, 1, 32); return(Encoding.UTF8.GetBytes(Base58.Bitcoin.Encode(address))); }
/// <summary> /// Network address. /// </summary> /// <returns>The address.</returns> /// <param name="coin">Coin.</param> /// <param name="networkApi">Network API.</param> public byte[] NetworkAddress(CoinDto coin, NetworkApiMethod networkApi = null) { Guard.Argument(coin, nameof(coin)).NotNull(); //TODO: Will remove the need to format to and from base64.. try { coin = coin.FormatCoinFromBase64(); } catch (FormatException) { } byte[] address = new byte[33]; string env = networkApi == null ? environment : networkApi.ToString(); address[0] = env == Constant.Mainnet ? (byte)0x1 : (byte)74; var hash = Cryptography.GenericHashWithKey( $"{coin.Envelope.Commitment}" + $" {coin.Envelope.Proof}" + $" {coin.Envelope.PublicKey}" + $" {coin.Envelope.Signature}" + $" {coin.Hash}" + $" {coin.Hint}" + $" {coin.Keeper}" + $" {coin.Principle}" + $" {coin.Stamp}" + $" {coin.Version}", coin.Principle.FromHex()); Array.Copy(hash, 0, address, 1, 32); return(Encoding.UTF8.GetBytes(Base58.Bitcoin.Encode(address))); }
/// <summary> /// Network address. /// </summary> /// <returns>The address.</returns> /// <param name="pk">Pk.</param> /// <param name="networkApi">Network API.</param> public byte[] NetworkAddress(byte[] pk, NetworkApiMethod networkApi = null) { Guard.Argument(pk, nameof(pk)).NotNull().MaxCount(32); byte[] address = new byte[33]; string env = networkApi == null ? environment : networkApi.ToString(); address[0] = env == Constant.Mainnet ? (byte)0x1 : (byte)74; Array.Copy(pk, 0, address, 1, 32); return(Encoding.UTF8.GetBytes(Base58.Bitcoin.Encode(address))); }
/// <summary> /// Network address. /// </summary> /// <returns>The address.</returns> /// <param name="pk">Pk.</param> /// <param name="networkApi">Network API.</param> public byte[] NetworkAddress(byte[] pk, NetworkApiMethod networkApi = null) { string env = string.Empty; byte[] address = new byte[33]; env = networkApi == null ? environment : networkApi.ToString(); address[0] = env == Constant.Mainnet ? (byte)0x1 : (byte)74; Array.Copy(pk, 0, address, 1, 32); return(Encoding.UTF8.GetBytes(Base58.Bitcoin.Encode(address))); }