using System.Collections.Generic;
static void Main(string[] args)
BigDecimal.Precision = 5000;
List<int> listaInt = new List<int> { 65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,81,82,83,84,86,87,88,89,91,92,93,94,96,97,98,99,101,102,103,104,106,107,108,109,111,112,113,114,116,117,118,119,121,122,123,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160 };
List<string> addresses = new List<string> { "18ZMbwUFLMHoZBbfpCjUJQTCMCbktshgpe","13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so","1BY8GQbnueYofwSuFAT3USAhGjPrkxDdW9","1MVDYgVaSN6iKKEsbzRUAYFrYJadLYZvvZ","19vkiEajfhuZ8bs8Zu2jgmC6oqZbWqhxhG","19YZECXj3SxEZMoUeJ1yiPsw8xANe7M7QR","1PWo3JeB9jrGwfHDNpdGK54CRas7fsVzXU","1JTK7s9YVYywfm5XUH7RNhHJH1LshCaRFR","12VVRNPi4SJqUTsp6FmqDqY5sGosDtysn4","1FWGcVDK3JGzCC3WtkYetULPszMaK2Jksv","1J36UjUByGroXcCvmj13U6uwaVv9caEeAt","1DJh2eHFYQfACPmrvpyWc8MSTYKh7w9eRF","1Bxk4CQdqL9p22JEtDfdXMsng1XacifUtE","15qF6X51huDjqTmF9BJgxXdt1xcj46Jmhb","1ARk8HWJMn8js8tQmGUJeQHjSE7KRkn2t8","15qsCm78whspNQFydGJQk5rexzxTQopnHZ","13zYrYhhJxp6Ui1VV7pqa5WDhNWM45ARAC","14MdEb4eFcT3MVG5sPFG4jGLuHJSnt1Dk2","1CMq3SvFcVEcpLMuuH8PUcNiqsK1oicG2D","1K3x5L6G57Y494fDqBfrojD28UJv4s5JcK","1PxH3K1Shdjb7gSEoTX7UPDZ6SH4qGPrvq","16AbnZjZZipwHMkYKBSfswGWKDmXHjEpSf","19QciEHbGVNY4hrhfKXmcBBCrJSBZ6TaVt","1EzVHtmbN4fs4MiNk3ppEnKKhsmXYJ4s74","1AE8NzzgKE7Yhz7BWtAcAAxiFMbPo82NB5","17Q7tuG2JwFFU9rXVj3uZqRtioH3mx2Jad","1K6xGMUbs6ZTXBnhw1pippqwK6wjBWtNpL","15ANYzzCp5BFHcCnVFzXqyibpzgPLWaD8b","18ywPwj39nGjqBrQJSzZVq2izR12MDpDr8","1CaBVPrwUxbQYYswu32w7Mj4HR4maNoJSX","1JWnE6p6UN7ZJBN7TtcbNDoRcjFtuDWoNL","1CKCVdbDJasYmhswB6HKZHEAnNaDpK7W4n","1PXv28YxmYMaB8zxrKeZBW8dt2HK7RkRPX","1AcAmB6jmtU6AiEcXkmiNE9TNVPsj9DULf","1EQJvpsmhazYCcKX5Au6AZmZKRnzarMVZu","18KsfuHuzQaBTNLASyj15hy4LuqPUo1FNB","15EJFC5ZTs9nhsdvSUeBXjLAuYq3SWaxTc","1HB1iKUqeffnVsvQsbpC6dNi1XKbyNuqao","1GvgAXVCbA8FBjXfWiAms4ytFeJcKsoyhL","1824ZJQ7nKJ9QFTRBqn7z7dHV5EGpzUpH3","18A7NA9FTsnJxWgkoFfPAFbQzuQxpRtCos","1NeGn21dUDDeqFQ63xb2SpgUuXuBLA4WT4","174SNxfqpdMGYy5YQcfLbSTK3MRNZEePoy","1MnJ6hdhvK37VLmqcdEwqC3iFxyWH2PHUV","1KNRfGWw7Q9Rmwsc6NT5zsdvEb9M2Wkj5Z","1PJZPzvGX19a7twf5HyD2VvNiPdHLzm9F6","1GuBBhf61rnvRe4K8zu8vdQB3kHzwFqSy7","1GDSuiThEV64c166LUFC9uDcVdGjqkxKyh","1Me3ASYt5JCTAK2XaC32RMeH34PdprrfDx","1CdufMQL892A69KXgv6UNBD17ywWqYpKut","1BkkGsX9ZM6iwL3zbqs7HWBV7SvosR6m8N","1AWCLZAjKbV1P7AHvaPNCKiB7ZWVDMxFiz","1G6EFyBRU86sThN3SSt3GrHu1sA7w7nzi4","1MZ2L1gFrCtkkn6DnTT2e4PFUTHw9gNwaj","1Hz3uv3nNZzBVMXLGadCucgjiCs5W9vaGz","1Fo65aKq8s8iquMt6weF1rku1moWVEd5Ua","16zRPnT8znwq42q7XeMkZUhb1bKqgRogyy","1KrU4dHE5WrW8rhWDsTRjR21r8t3dsrS3R","17uDfp5r4n441xkgLFmhNoSW1KWp6xVLD","13A3JrvXmvg5w9XGvyyR4JEJqiLz8ZySY3","16RGFo6hjq9ym6Pj7N5H7L1NR1rVPJyw2v","1UDHPdovvR985NrWSkdWQDEQ1xuRiTALq","15nf31J46iLuK1ZkTnqHo7WgN5cARFK3RA","1Ab4vzG6wEQBDNQM1B2bvUz4fqXXdFk2WT","1Fz63c775VV9fNyj25d9Xfw3YHE6sKCxbt","1QKBaU6WAeycb3DbKbLBkX7vJiaS8r42Xo","1CD91Vm97mLQvXhrnoMChhJx4TP9MaQkJo","15MnK2jXPqTMURX4xC3h4mAZxyCcaWWEDD","13N66gCzWWHEZBxhVxG18P8wyjEWF9Yoi1","1NevxKDYuDcCh1ZMMi6ftmWwGrZKC6j7Ux","19GpszRNUej5yYqxXoLnbZWKew3KdVLkXg","1M7ipcdYHey2Y5RZM34MBbpugghmjaV89P","18aNhurEAJsw6BAgtANpexk5ob1aGTwSeL","1FwZXt6EpRT7Fkndzv6K4b4DFoT4trbMrV","1CXvTzR6qv8wJ7eprzUKeWxyGcHwDYP1i2","1MUJSJYtGPVGkBCTqGspnxyHahpt5Te8jy","13Q84TNNvgcL3HJiqQPvyBb9m4hxjS3jkV","1LuUHyrQr8PKSvbcY1v1PiuGuqFjWpDumN","18192XpzzdDi2K11QVHR7td2HcPS6Qs5vg","1NgVmsCCJaKLzGyKLFJfVequnFW9ZvnMLN","1AoeP37TmHdFh8uN72fu9AqgtLrUwcv2wJ","1FTpAbQa4h8trvhQXjXnmNhqdiGBd1oraE","14JHoRAdmJg3XR4RjMDh6Wed6ft6hzbQe9","19z6waranEf8CcP8FqNgdwUe1QRxvUNKBG","14u4nA5sugaswb6SZgn5av2vuChdMnD9E5","1NBC8uXJy1GiJ6drkiZa1WuKn51ps7EPTv" };
string maxExample = "000000000000000000000000000000000000000000000003ffffffffffffffff";
List<BigDecimal> privateKeyList = new List<BigDecimal>();
foreach (int NUM in listaInt)
BigDecimal lowerBound = new BigDecimal(0.1111111111111111111111111111111111111111111111);
BigDecimal upperBound = new BigDecimal(0.2734341728527236448087478493107482790946960459);
BigDecimal d = GetRandomBigDecimal(lowerBound, upperBound);
BigDecimal z = 0.5722242717501870856722234748303890228271484375 + d;
BigDecimal y = 0.5722242717501870856722234748303890228271484375 - d;
Console.WriteLine($"z found: {z}");
Console.WriteLine($"y found: {y}");
BigDecimal x1 = (n - 1) + z;
BigDecimal x2 = (n - 1) + y;
Console.WriteLine($"x1 found: {x1}");
Console.WriteLine($"x2 found: {x2}");
Console.WriteLine($"x1 found: {x1}");
Console.WriteLine($"x2 found: {x2}");
foreach (var keyI in privateKeyList)
Console.WriteLine($"keyI {keyI}");
int integerPart = (int)Math.Floor((decimal)keyI);
BigDecimal decimalPart = keyI - integerPart;
BigInteger integerPower = BigInteger.Pow(2, integerPart);
Console.WriteLine($"integerPower {integerPower}");
BigDecimal decimalPower = new BigDecimal(Math.Pow(2, (double)decimalPart));
Console.WriteLine($"decimalPower {decimalPower}");
BigDecimal resultDec = integerPower * decimalPower;
BigDecimal result = resultDec.WholeValue;
Console.WriteLine($"2^{keyI} = {result}");
BigInteger bigInteger = BigInteger.Parse(result.ToString());
string hexadecimalValue = bigInteger.ToString("X");
string hexadecimal = hexadecimalValue.PadLeft(maxExample.Length, '0').ToLower();
byte[] privateKeyBytes = Enumerable.Range(0, hexadecimal.Length).Where(x => x % 2 == 0).Select(x => Convert.ToByte(hexadecimal.Substring(x, 2), 16)).ToArray();
var privateKey = new Key(privateKeyBytes);
string privateKeyHex = privateKey.ToHex();
PubKey publicKey = privateKey.PubKey;
BitcoinAddress bitcoinAddress = publicKey.GetAddress(ScriptPubKeyType.Legacy, Network.Main);
Console.WriteLine($"Address found: {integerPart+1} {bitcoinAddress} privateKeyHex: {hexadecimal} {bigInteger}");
if (addresses.Contains(bitcoinAddress.ToString()))
BitcoinSecret mainNetPrivateKey = privateKey.GetBitcoinSecret(Network.Main);
string textToWrite = $"Private Key: {hexadecimal}\nAddress: {bitcoinAddress}\nWIF: {mainNetPrivateKey}\n";
string filePath = "found_addresses.txt";
File.AppendAllText(filePath, textToWrite);
Console.WriteLine($"Address found: {bitcoinAddress} Private Key: {hexadecimal} WIF: {mainNetPrivateKey}");
static BigDecimal GetRandomBigDecimal(BigDecimal lowerBound, BigDecimal upperBound)
Random random = new Random();
BigDecimal range = upperBound - lowerBound;
double sample = random.NextDouble();
BigDecimal scaled = BigDecimal.Multiply(new BigDecimal(sample),range);
BigDecimal result = BigDecimal.Add(scaled,lowerBound);