C# 简单比特币挖掘算法

C# 简单比特币挖掘算法,c#,c,algorithm,bitcoin,C#,C,Algorithm,Bitcoin,我试图弄清楚简单的比特币挖掘算法是如何在简单的c或c#或某种伪语言中工作的。我在上找到了一个例子,但不幸的是,不清楚它的作用。我无法运行它 假设我只有一个输入:一个比特币钱包“abc…”,我想用来挖掘比特币。我需要一个简单易懂的算法,它可以在一台机器上用一个cpu上的一个线程进行比特币挖掘[我知道这需要很长时间才能完成:)]超级愚蠢而且毫无用处,但我曾经为了演示目的做过一次: from hashlib import md5 from random import random import sys

我试图弄清楚简单的比特币挖掘算法是如何在简单的c或c#或某种伪语言中工作的。我在上找到了一个例子,但不幸的是,不清楚它的作用。我无法运行它


假设我只有一个输入:一个比特币钱包“abc…”,我想用来挖掘比特币。我需要一个简单易懂的算法,它可以在一台机器上用一个cpu上的一个线程进行比特币挖掘[我知道这需要很长时间才能完成:)]

超级愚蠢而且毫无用处,但我曾经为了演示目的做过一次:

from hashlib import md5
from random import random
import sys

# what to hash
data = "Bitcoins!"

# This is just a first run to init the variables 
h = md5(data.encode('utf-8'))
v = h.digest()
best = v
best_i = data
best_vhex = h.hexdigest()

# x ist just a helper to only display
# a subset of all updates (calculates faster)
x = 0
step = 100

# In reality, this loop stops when the "h" hash
# is below a certain threshold (called "difficulty")
while True:
  i = data + str(random())
  h = md5(i.encode('utf-8'))
  v = h.digest()
  vhex = h.hexdigest()

  # log progress
  if v < best or x > step:
    msg = "%-25s | %-25s -> %s" % (i, best_i, best_vhex)
    sys.stdout.write('\r' + msg)
    x = 0
  else:
    x += 1

  # check if new best one
  if v < best:
    best_i, best, best_vhex = i, v, vhex
    print
从hashlib导入md5
从随机导入随机
导入系统
#散列什么
data=“比特币!”
#这只是初始化变量的第一次运行
h=md5(数据编码('utf-8'))
v=h.摘要()
最佳=v
最佳_i=数据
最佳_vhex=h.hexdigest()
#x只是一个仅显示的辅助对象
#所有更新的子集(计算速度更快)
x=0
步长=100
#实际上,当“h”散列时,此循环停止
#低于某个阈值(称为“难度”)
尽管如此:
i=数据+str(随机()
h=md5(即编码('utf-8'))
v=h.摘要()
vhex=h.hexdigest()
#记录进度
如果v步骤:
msg=“%-25s |%-25s->%s”%(i,最佳i,最佳vhex)
sys.stdout.write('\r'+msg)
x=0
其他:
x+=1
#检查是否有新的最好的
如果v<最佳值:
最佳值i,最佳值,最佳值vhex=i,v,vhex
打印

我对此不确定,但可能会有所帮助?谢谢,我会尝试在bitcoin@Lu4您在使用c#进行挖掘方面取得了任何进展吗?我有这个想法,但没有时间实施它。您为什么要使用MD5?我知道比特币挖掘必须用SHA256完成。。。或者?为什么这个超级愚蠢又没用?很抱歉,我对比特币真的不太了解,我正在寻找一些源代码(任何语言),我可以用它们来理解挖掘算法的实际内容。在这段代码中,什么时候会输出块?试图教育自己…此代码示例仅演示如何处理块。没有输出。您需要额外的代码来“构造”块(选择最多的jucy事务并将它们包装到块中等等),然后提交它。它仅通过演示工作证明如何工作来说明核心“问题”。你的证明是找到一个块(事务)+随机消息,产生一个比难度小的。