c# pow implementation work
This commit is contained in:
parent
e9dbc9fa09
commit
60d6aa0510
@ -21,7 +21,7 @@ namespace onionrpow_cli
|
|||||||
//stdout.Write(buffer, 0, bytes);
|
//stdout.Write(buffer, 0, bytes);
|
||||||
data.AddRange(buffer);
|
data.AddRange(buffer);
|
||||||
}
|
}
|
||||||
onionrpow.OnionrPow.compute(data.ToArray(), 1);
|
onionrpow.OnionrPow.compute(data.ToArray(), 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,13 +17,12 @@ namespace onionrpow
|
|||||||
public string meta { get; set; }
|
public string meta { get; set; }
|
||||||
public string sig { get; set; }
|
public string sig { get; set; }
|
||||||
public string signer { get; set; }
|
public string signer { get; set; }
|
||||||
|
|
||||||
|
public int n;
|
||||||
|
public int c;
|
||||||
public int time;
|
public int time;
|
||||||
|
|
||||||
private List<byte> data;
|
//public List<byte> data { get; set; }
|
||||||
|
|
||||||
public void setData(List<byte> blockData){
|
|
||||||
this.data = blockData;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
public class OnionrPow
|
public class OnionrPow
|
||||||
@ -52,9 +51,46 @@ namespace onionrpow
|
|||||||
counter += 1;
|
counter += 1;
|
||||||
}
|
}
|
||||||
Block block = JsonConvert.DeserializeObject<Block>(Encoding.UTF8.GetString(metadataJson.ToArray()));
|
Block block = JsonConvert.DeserializeObject<Block>(Encoding.UTF8.GetString(metadataJson.ToArray()));
|
||||||
block.setData(justData);
|
block.n = new Random().Next(10000);
|
||||||
|
block.c = 0;
|
||||||
|
|
||||||
|
var justDataArray = justData.ToArray();
|
||||||
|
justData.Clear();
|
||||||
|
var encoded = new List<byte>();
|
||||||
|
int calculatedDifficulty = 0;
|
||||||
|
|
||||||
|
var nl = Encoding.UTF8.GetBytes("\n")[0];
|
||||||
|
|
||||||
|
while(true){
|
||||||
|
encoded.Clear();
|
||||||
|
encoded.AddRange(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(block)));
|
||||||
|
// TODO keep nl and dataarray in
|
||||||
|
encoded.Add(nl);
|
||||||
|
encoded.AddRange(justDataArray);
|
||||||
|
var encodedArray = encoded.ToArray();
|
||||||
|
|
||||||
|
calculatedDifficulty = 0;
|
||||||
|
|
||||||
|
foreach(char c in shaAlg.ComputeHash(encodedArray)){
|
||||||
|
if (c == 0){
|
||||||
|
calculatedDifficulty += 1;
|
||||||
|
if (calculatedDifficulty == difficulty){
|
||||||
|
Console.WriteLine(counter);
|
||||||
|
Console.WriteLine(Encoding.UTF8.GetString(encodedArray));
|
||||||
|
Console.WriteLine(BitConverter.ToString(shaAlg.ComputeHash(encodedArray)));
|
||||||
|
|
||||||
|
goto powDone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
block.c += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
powDone:;
|
||||||
}
|
}
|
||||||
//b'{"meta":"{\\"ch\\":\\"global\\",\\"type\\":\\"brd\\"}","sig":"pR4qmKGGCdnyNyZRlhGfF9GC7bONCsEnY04lTfiVuTHexPJypOqmxe9iyDQQqdR+PB2gwWuNqGMs5O8\\/S\\/hsCA==","signer":"UO74AP5LGQFI7EJTN6NAVINIPU2XO2KA7CAS6KSWGWAY5XIB5SUA====","time":1600542238,"pow":300182}\nxcvxcvvxcxcv'
|
//b'{"meta":"{\\"ch\\":\\"global\\",\\"type\\":\\"brd\\"}","sig":"pR4qmKGGCdnyNyZRlhGfF9GC7bONCsEnY04lTfiVuTHexPJypOqmxe9iyDQQqdR+PB2gwWuNqGMs5O8\\/S\\/hsCA==","signer":"UO74AP5LGQFI7EJTN6NAVINIPU2XO2KA7CAS6KSWGWAY5XIB5SUA====","time":1600542238,"pow":300182}\nxcvxcvvxcxcv'
|
||||||
}
|
}
|
||||||
|
@ -116,6 +116,7 @@ class SubprocessPOW:
|
|||||||
metadata['n'] = secrets.randbits(16)
|
metadata['n'] = secrets.randbits(16)
|
||||||
puzzle = self.puzzle
|
puzzle = self.puzzle
|
||||||
difficulty = self.difficulty
|
difficulty = self.difficulty
|
||||||
|
start = time.time()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
# Break if shutdown received
|
# Break if shutdown received
|
||||||
@ -135,5 +136,6 @@ class SubprocessPOW:
|
|||||||
token = bytesconverter.bytes_to_str(token)
|
token = bytesconverter.bytes_to_str(token)
|
||||||
if puzzle == token[0:difficulty]:
|
if puzzle == token[0:difficulty]:
|
||||||
pipe.send(payload)
|
pipe.send(payload)
|
||||||
|
print(metadata['pow'], time.time() - start)
|
||||||
break
|
break
|
||||||
nonce += 1
|
nonce += 1
|
||||||
|
Loading…
Reference in New Issue
Block a user