Я сейчас пытаюсь узнать о блокчейнах и понял основные принципы.Поэтому я пытаюсь реализовать простой блокчейн
. Проблема в том, что я не могу заставить работать алгоритм доказательства работы.
let sha256 = System.Security.Cryptography.SHA256.Create()
let hash (n : int) =
sha256.ComputeHash (BitConverter.GetBytes n)
|> BitConverter.ToString
|> fun x -> x.Replace ("-", "")
let verify x = hash x |> fun p1 -> p1.EndsWith "0000"
let rec proofOfWork p0 x =
if verify (p0 + x) then
x
else
proofOfWork p0 (x + 1)
[<EntryPoint>]
let main argv =
let s = proofOfWork 100 1
let s' = proofOfWork s 1
let s'' = proofOfWork s' 1
0
Это возвращает замкнутый цикл "10312 -> 100-> 10312 ", что кажется довольно неправильным, что имеет смысл, если вы подумаете об этом.Итак, как бы вы на самом деле пошли на создание одного из этих алгоритмов, когда я следовал руководству по Python, в котором алгоритм был таким же, как этот?