consolidate all repos to one for archive

This commit is contained in:
2025-01-28 13:46:42 +01:00
commit a6610fbc7a
5350 changed files with 2705721 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.Threading.Tasks;
using System.Text.Json.Serialization;
namespace WpfBlockChanApp
{
internal class Block
{
public int Index { get; set; }
public string PreviousHash { get; set; }
public string Hash { get; set; }
public string Data { get; set; }
public long Timestamp { get; set; }
public int Nonce { get; set; }
public int Difficulty { get; set; }
public int LastAdjustBlock { get; set; }
[JsonIgnore]
public string GetString
{
get { return $"{Index}\n{Data}\n{PreviousHash}\n{Hash}"; }
}
public Block(int index, string previousHash, string data, int difficulty, int lastAdjustBlock)
{
Index = index;
PreviousHash = previousHash;
Data = data;
Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
Nonce = 0;
Difficulty = difficulty;
LastAdjustBlock = lastAdjustBlock;
Hash = CalculateHash();
}
public string CalculateHash()
{
using (SHA256 sha256 = SHA256.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes($"{Index}{PreviousHash}{Timestamp}{Data}{Difficulty}{Nonce}");
byte[] outputBytes = sha256.ComputeHash(inputBytes);
return Convert.ToBase64String(outputBytes);
}
}
public bool MatchDifficulty()
{
return Hash[..Difficulty] != new string('0', Difficulty);
}
}
}